Latest

[ChatStream] Transformer応答をモックする Transformer Mock

ChatStream Guide

[ChatStream] Transformer応答をモックする Transformer Mock

こんにちは! (株)Qualiteg プロダクト開発部 です! 本稿では、モックデータの作成方法について説明します! これは正式には「Transformer Mock」と呼ばれている機能のためのもので、実際のLLM出力をレコーディングして再現するためのものです。 なぜこんなことが必要かというと、 LLM アプリのテスト(単体テストなど)で使用します。LLMアプリのテストをするとき、古典的な単体テストでは、入力に対して期待する出力は固定されていることが前提です。 ところがLLMはその特性上、同一の入力に対しても毎回異なる応答を返してきます。そこが生成AIの良いところですが古典的な単体テストをするときには悩んでしまいます。 ここで賢い読者の皆様は、同一の入力に対して、同一の出力を得たいなら、シードを固定すればいいじゃん。とお考えの方もいらっしゃるとおもいますが、シード値を固定して、入力を固定して、各種サンプリングパラメータを固定しても GPUの種類が異なると異なる出力を出してしまう、ということがわかっています。 これでは、GPUを変更したとたんに単体テストが通らなくなって困ってし

By Qualiteg プロダクト開発部
[自作日記8] 電源、SSD、ケースは?

GPUマシン自作

[自作日記8] 電源、SSD、ケースは?

今日は電源、SSD、ケースの購入です! Junです。 残りは電源とSSD、ケースをゲットすれば一通り揃いそうです。 また、置手紙をみてみます。 ⑥ SSD は 1T以上。 ⑦ 電源は 800W 以上、 80Plus Titanium ⑧ ケースはグラボがちゃんと入ることを確認すること! SSDの選定 SSDは、1T以上ということで、 3万円の SAMSUNG 980 PRO 2T を購入。 電源の選定 電源装置は 800W 以上ということで 850W OWLTECH PC電源 850W /ATX /Titanium PRIMETX850S を 4.5万円で購入しました。 ケースの選定 さて、残るはケースです。 ⑧ ケースはグラボがちゃんと入ることを確認すること! この意味がよくわからなかったので、店員さんに相談することにしました。 今回は ATX サイズのケースを購入する予定ですが、 ATX

By Qualiteg Boot Camp
【LLMセキュリティ】ゼロリソースブラックボックスでの幻覚(ハルシネーション)検出

LLM セキュリティ

【LLMセキュリティ】ゼロリソースブラックボックスでの幻覚(ハルシネーション)検出

こんにちは、Qualiteg研究部です。 今回は、データベースなど外部の情報を使用しない「ゼロリソース」状態での幻覚(ハルシネーション)検出の手法である以下論文について解説いたします。 SelfCheckGPT: Zero-Resource Black-Box Hallucination Detection for Generative Large Language Models https://arxiv.org/abs/2303.08896 背景 LLMが出力する「幻覚」の問題 近年、生成型大規模言語モデル(LLMs)は、多様なユーザープロンプトに対して非常に流暢な応答を生成する能力を持っています。 しかし、これらのモデルは事実を幻覚させたり、非事実的な発言をすることが知られており、出力への信頼性を損なう可能性があります。 この問題に対処するための既存のファクトチェック手法は、出力確率分布へのアクセスが必要だったり、外部データベースを使用した複雑なモジュールを必要としたりします。 本論文では、SelfCheckGPTと呼ばれる新しいアプローチを提案しています。このア

By Qualiteg 研究部
[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 プロダクト開発部