Latest

[AI数理]対数関数の微分法・前編

AI数理

[AI数理]対数関数の微分法・前編

おはようございます!(株) Qualiteg 研究部です。 本日から2回にわたって対数関数について学んでいきましょう。 正確にいうと、対数関数の微分法を学びます。 対数関数って何だっけ? まず、対数関数というのは、「ある数 \( x \) が別の数 \( b \) を何回かけると \( x \) になるか」を調べる方法です。例えば、\( b \) が 2 で \( x \) が 8 の場合、2 を 3 回かけると 8 になります。この場合、数学的には「\( b \) の \( x \) に対する対数」と言います。 これを数式で表すと、次のようになります: $$ \log_b(x) = y $$ ここで \( b \) は底(

By Qualiteg 研究部
[ChatStream] LLMの読み込みが長いときは Generator Mock レスポンス

ChatStream Guide

[ChatStream] LLMの読み込みが長いときは Generator Mock レスポンス

こんにちは! (株)Qualiteg プロダクト開発部 です! 本稿では、LLMの読み込みに時間がかかるときに使えるテクニックについてご紹介いたします。 テスト用途や、ChatStream の API をつかったサンプルアプリを実装したいときに、何度か ChatStream を再起動しては、試してみたいというシーンがあります。そういうときに、本来は LLM として読み込まなくても、ChatStreamのAPIにそった”決まり切った”レスポンスで問題がないという場合があります。 このとき、サイズの小さなLLMを読んで読み込み時間を短縮するというワザもあるのですが、そもそも、固定的なレスポンスを返してくれればそれでOKという場合は、 Mockレスポンス を指定することができます。 再起動のたびに、 LLM を読み込む時間にストレスを感じていた方はぜひこちらをお試しくださいませ! Generator Mockレスポンスの利用(高速起動) Generator Mockレスポンスを使用すると読み込みに時間のかかる事前学習済言語モデルのかわりに、ダミーの文章を生成させることがで

By Qualiteg プロダクト開発部
[AI新規事業創出]Qualitegが考える、企画後にもめないための新規事業承認判断軸の検討方法とは

AI-Business

[AI新規事業創出]Qualitegが考える、企画後にもめないための新規事業承認判断軸の検討方法とは

新規事業の検討において、クライアントからの相談は手段ありきで始まることが多く、DXやAI導入の提案が役員から承認されないケースが多いです。事業化の承認を得るためには、なぜその事業を自社で行う必要があるのか、その目的とゴールを明確に設定することが重要です。

By Join us, Michele on Qualiteg's adventure to innovation
[ChatStream] コンソールチャットの作成

ChatStream Guide

[ChatStream] コンソールチャットの作成

こんにちは! (株)Qualiteg プロダクト開発部 です! 本稿では、 ChatStream を使って、コンソールチャットを作成する方法について説明いたします! handle_console_input メソッドを使用することで CLI ベースのチャットを簡単に作成しモデルを試すことができます chat.py import asyncio import torch from transformers import AutoTokenizer, AutoModelForCausalLM from chatstream import ChatStream, ChatPromptTogetherRedPajamaINCITEChat as ChatPrompt, LoadTime model_path = "togethercomputer/RedPajama-INCITE-Chat-3B-v1" device = "cuda" # "cuda" / "cpu"

By Qualiteg プロダクト開発部
[自作日記7’] コラム:コンシューマ用GPUとプロ用GPUの違い

GPUマシン自作

[自作日記7’] コラム:コンシューマ用GPUとプロ用GPUの違い

今回は、コンシューマー用GPUは本格的なAI計算に使用できるのか、プロ用GPUとの違いは何か。比較も交えながら考えてみたいと思います。 私たちAI ベンチャー(ベンチャーじゃなくても)でGPUを使うシーンは3つあります。 1. AI研究:最新モデルや論文のちょっとしたお試し 小規模な学習。小規模な推論。 2. 学習:いわゆるディープラーニングのトレーニング。 長いと数週間、数か月におよぶ。 3. 商用運用:お客様が使用するサービスのバックエンドとしての AIエンジンの商用運用 今回 Jun さんが作ろうとしている GPU マシンは 1.AI研究 のためのものです。 というのも、たとえば、コンシューマー用GPUやコンシューマー用の自作パソコンの場合は長時間にわたるディープラーニングのトレーニングには向いていません。 やってる人もたまにみかけますが、心配になります。 なぜなら、学習させたいネットワークにもよりますが、1回の学習にかかる時間は数日から数週間、長いと数か月にわたります。その間、GPUをドライブするソフトウェアが安定

By Qualiteg Boot Camp
[ChatStream] Web サーバー(ASGI server) の起動

ChatStream Guide

[ChatStream] Web サーバー(ASGI server) の起動

こんにちは! (株)Qualiteg プロダクト開発部 です! 本稿では、 ChatStream 搭載した Webサーバーの起動方法について説明いたします! uvicorn(内部起動) ChatStreamは FastAPI/Starlette に対応しているため、 ASGI サーバーで動作させることができます。 uvicorn をコード内で定義するには以下のように実装します def start_server(): uvicorn.run(app, host='localhost', port=9999) def main(): start_server() if __name__ == "__main__": main() ソースコード全体 import torch import uvicorn from fastapi import FastAPI,

By Qualiteg プロダクト開発部
[AI数理] 指数関数

AI数理

[AI数理] 指数関数

おはようございます!(株) Qualiteg 研究部です。本日は指数関数を学びましょう。 対数関数の微分公式の導出でお役立ちなので、今回の出番となりました。 指数関数とは 指数関数は、繰り返しの掛け算を表す数学の式です。例えば、「2を3回掛ける」を考えると、これは \(2 \times 2 \times 2\) となり、結果は \(8\) です。数学的には、これを \(2^3 = 8\) と表現します。ここで \(2^3\) の形が指数関数であり、「 \(2\) 」が底、「\(3\)」が指数です。 指数関数は多くの自然現象や科学技術で見られる現象を表すのに非常に重要です。例えば、銀行の複利計算や細菌の増殖など、時間とともに増加する速度が速くなるような現象です。 指数関数はまた、数学において他の多くの概念や公式の基礎ともなっています。特に、対数関数の微分公式の導出には指数関数が不可欠です。対数関数の微分は、対数関数のグラフの傾きを求める計算方法です。この微分公式を理解するためには、指数関数の性質が重要です。 指数関数の重要な性質の一つに、

By Qualiteg 研究部
[AI新規事業創出]Qualitegオリジナル、自社のやるべき新規事業を見極めるためのMVV分析のやり方とは

AI-Business

[AI新規事業創出]Qualitegオリジナル、自社のやるべき新規事業を見極めるためのMVV分析のやり方とは

新規事業の企画では、「なぜ自社で行うべきか」を明確にすることが重要です。多くの企業がこの点を見落とし、役員会でのプレゼンテーションで失敗することがあります。企業のミッション(Mission)、ビジョン(Vision)、バリュー(Value)を理解し、それに基づいて新規事業の必要性や目的を定義することで、事業の方向性と一貫性を保ちながら、企業の長期的な目標に寄与する計画が立てられます。

By Join us, Michele on Qualiteg's adventure to innovation
[ChatStream] キューイングシステムと同時処理制限

ChatStream Guide

[ChatStream] キューイングシステムと同時処理制限

こんにちは! (株)Qualiteg プロダクト開発部 です! 本稿では、 ChatStream のキューイングシステムについてご説明いたします! キューイングシステムとは ChatStream は多数同時アクセス要求が来たときに、 リクエストをキューイングし、同時に実行できる文章生成の数を制限することができます。 GPU や CPU の性能に応じて、文章生成処理の同時実行数を制限することで、良好な応答性能を得ることができます。 また同時実行数を超えるリクエストがあった場合はリクエストをキューイング(待ち行列に追加)し、 順次実行することで、負荷を適切にコントロールします。 同時実行とは 同時実行とは 1GPU で実行する場合には、正確には同時実行ではなく 並行実行(concurrent) となります。 同時実行数をセットすると、その数だけ 並行実行 されます。 たとえば、同時実行数の最大値が2に設定されている状態で、2人のユーザー1、ユーザー2 が同じタイミングにリクエストしてきた場合 2人のリクエストは 処理キュー (文章生成中をあらわす

By Qualiteg プロダクト開発部
[自作日記7] AI用GPUの選定

GPUマシン自作

[自作日記7] AI用GPUの選定

今回は、AIに適したグラフィックボード(GPU)の選定をします。 本編に行く前に、グラフィックボードとGPUの違いについて整理しておきましょう グラフィックボードは、コンピューターで画像処理やAIの計算を担当する重要なハードウェアで パソコンのPCI Express のスロットに挿入して使用するのが一般的です。 一方 GPU はグラフィックボードの主要な構成要素の1つで、グラフィックボードは以下のようなコンポーネントで構成されています。 1. GPUチップ - グラフィック処理の中心で、複雑な数学的計算を高速に実行します。 2. VRAM(ビデオRAM) - GPUが直接アクセスする専用メモリで、ディープラーニングでは、パラメータ(重みやバイアス)や計算過程を保持する役割があり非常に高速に動作します。 3. 冷却システム - GPUが生成する熱を効果的に放散するためのファンやヒートシンク。 グラフィックボードとGPUを同一視して書いている記事も多く、私たちもあまり厳密に分けて書いていないですが、実体としては↑のような感じですね。 さて、それでは Jun さんの買い物の

By Qualiteg Boot Camp
[ChatStream] Web API エンドポイントの実装

ChatStream Guide

[ChatStream] Web API エンドポイントの実装

こんにちは! (株)Qualiteg プロダクト開発部 です! 本稿では、 ChatStream を FastAPI の Web API として実装する方法についてご説明いたします! エンドポイントの実装 /chat_stream という URL パスに、ストリーミングチャット用のWebエンドポイントをつくるには 以下のように handle_chat_stream_request を呼び出します。 これだけで、ユーザーからのリクエストは 文章生成の同時実行数を制御したストリーミングチャットの実装は完了です @app.post("/chat_stream") async def stream_api(request: Request): # handling FastAPI/Starlette's Request response = await chat_

By Qualiteg プロダクト開発部
[AI新規事業創出]Qualitegが考える、新規事業開発におけるゴール設定方法とは

AI-Business

[AI新規事業創出]Qualitegが考える、新規事業開発におけるゴール設定方法とは

新規事業開発のゴール設定には5つのステップがあります。1) MVV分析で企業の使命とビジョンを明確化、2) 新規事業承認の基準を考慮、3) 競合調査、4) 定量的ゴールの設定、5) 新規事業方向性シートの作成。これらのステップにより、明確なゴール設定と効果的な事業開発が可能となります。

By Join us, Michele on Qualiteg's adventure to innovation
[ChatStream] 生成と初期化

ChatStream Guide

[ChatStream] 生成と初期化

こんにちは (株)Qualiteg プロダクト開発本部です! 本稿では、 ChatStream の生成と初期化についてご説明いたします! ChatStream クラスは ChatStream パッケージのコアとなるクラスで、FastAPI/Starlette の Request を受け取り、 負荷制御をしながらストリーミングレスポンスをクライアントに送出する役割をもっています。 以下のように model,tokenizer,device, 最大同時処理数 num_of_concurrent_executions 、待ち行列の最大数 max_queue_size ,プロンプトクラス ChatPrompt を指定して初期化します tokenizer = AutoTokenizer.from_pretrained(model_path) model = AutoModelForCausalLM.from_pretrained(model_path, torch_dtype=torch.float16) model.

By Qualiteg プロダクト開発部
[自作日記6] メモリ選定

GPUマシン自作

[自作日記6] メモリ選定

今回は、メモリや周辺パーツを選定しましょう。 メモリ選定にも落とし穴があり、Junさんは見事落とし穴にハマってしまいました。さっそくみていきましょう。 ふー。やっとCPUとマザーボードが買えました。 あと何を買えばいいんだっけ。ということで、もう一度、先輩の置手紙をみてみます ① CPUは 12世代か13世代のどちらでもよい。 ② GPU中心でつかうため、CPU側の能力は i5程度で問題ない。 ③ マザーボードのチップセットは CPUが12世代ならZ690 か CPUが13世代ならZ790。ATX。 ④ CPUメモリは 64GB 以上。DDR4でもDDR5でもどちらでもOK ⑤ グラボはコンシューマー向けでOKだけど、最上位モデルに近いもの。 ⑥ SSD は 1T以上。 ⑦ 電源は 800W 以上、 80Plus Titanium ⑧ ケースはグラボがちゃんと入ることを確認すること! ①~③までは無事かえましたので、あとはメモリ、グラボ、SSD、電源、ケースを買わないといけません。まだまだ、買い物ありますね。 おなかもすいてきたので、CP

By Qualiteg Boot Camp
AI数理は Minecraftの夢を見る?

AI数理

AI数理は Minecraftの夢を見る?

みなさまこんにちは、(株) Qualiteg 研究部です。 LLM関連の論文を読んでいると、なぞの数式、なぞの記号がたくさんでてきて、めまいがすることはないでしょうか? 私も学生時代ニューラルネットを研究していましたが、それを理解するための数学的背景がミルフィーユのように多層になっており、面食らった記憶があります。 現代のLLMは、パーセプトロンや初期のニューラルネットの研究にくらべると、いや、分析系のディープラーニングベースAIの頃からみてもミルフィーユの層が10倍くらい厚く、LLMの仕組みを数学的に理解するには、その何重、何百という数学的理論基盤を理解しなければいけません。 (LLMを利用するだけなら、ミルフィーユをまるごと食べて「おいし~」って言っている状態ですが、じゃあ、その多層(の数理)になったミルフィーユを1層ずつ理解しながら作っていくのは食べるのにくらべてどれだけ大変か、ですね。) このように、LLMの実現には、機械学習の基礎編としての確率統計の話や、クラシックな機械学習の理論から、ディープラーニングで使う微分や離散化、RNN,LSTMなどを経てそこからトラ

By Qualiteg 研究部
[ChatStream] HTTP セッションミドルウェアの設定

ChatStream Guide

[ChatStream] HTTP セッションミドルウェアの設定

こんにちは! (株)Qualiteg プロダクト開発部 です! 本稿では、 ChatStream に セッションミドルウェアをセットし、Webアプリケーションをステートフルにする方法についてご説明いたします! ChatStream では Qualiteg が開発した独自のセッションミドルウェアを使用しており、通常の Starlette 用のセッションミドルウェアよりも高い柔軟性を実現しています。(Java Servlet のセッション管理アプローチに近いです) セッションミドルウェア 開いたブラウザでWebチャットをするときにマルチラウンドの会話を成立するためには ChatPrompt(会話履歴) が複数ターンの会話のなかで更新されていく必要があります。 デフォルトでは、 ChatStream は HTTP セッションを使用してWebアプリケーションをステートフルにし、 ChatPrompt をブラウザが開いている間保持することができます。 HTTP セッションを使用するには、以下のように FastAPI のミドルウェアを登録します。 from fas

By Qualiteg プロダクト開発部