ChatStream🄬でLlama-3-Elyza-JP-8B を動かす

ChatStream🄬でLlama-3-Elyza-JP-8B を動かす

こんにちは、本日は Llama-3-Elyza-JP-8B を使ってみました。

昨日 2024年6月26日に発表(https://prtimes.jp/main/html/rd/p/000000046.000047565.html)された Llama-3-Elyza-JP-8B は 70B 版では「GPT-4」を上回る性能の日本語LLMといわれています。

今回、当社でも Playground 環境に Llama-3-Elyza-JP-8B を搭載して試してみましたのでご紹介します。

70B(700億パラメータ)版は GPT-4 を上回るとのことですので、8B(80億パラメータ)版はGPT-3.5 と比較してみることにいたしました。

(性能比較は https://note.com/elyza/n/n360b6084fdbd の記事に詳しく書いてあります。)

AWQ量子化版を使用してみる

今回は、A4000 というスモールGPUで推論サーバーを構築するため、AWQ により 4bit 量子化バージョンの https://huggingface.co/elyza/Llama-3-ELYZA-JP-8B-AWQ を使用いたしました。

もとが 8B(80億) パラメータ相当ですので、 4bit 量子化すると、モデルサイズは 2B(20億)パラメータ相当となります。

AWQ量子化版は、 推論エンジンとして vLLM での動作が想定されていますので、今回は、 ChatStream の推論エンジンとして vLLM 0.4.2 を選択して推論環境を構築いたしました。

ChatStream.net (playground)デプロイする

ChatStream SDK を使って Llama-3-Elyza-JP-8B 用の A4000 GPU のサーバーノードを1つ作りました。

作業時間は15分程度です。

このサーバーノードを Playground である ChatStream.net のフロントサーバーに登録すれば出来上がりです。

疎通試験も含めてトータル30分程度で使えるようになりました。

このように、激早で構築することができます。

LLM負荷ツールで計測したところ同時20リクエスト/sまではパフォーマンス低下ほぼ無い安定したスループットを達成しています。

おそらく60リクエスト/s 程度までは問題ないレベルだと思われます。

それを超えるリクエストが想定される場合は、 ChatStream のモデル並列化機能を使って簡単に分散させることも可能です。

体験デモ

「Llama-3-Elyza-JP-8B」 vs 「GPT-3.5 」

以下URLで、実際に Llama-3-Elyza-JP-8B を体験することができます。

ChatStreamのマルチタスク機能を使って比較用に GPT-3.5 も表示しています。

(マルチタスク機能と入力Syncを使うことで、複数のLLMに同時に質問を投げかけることができます)

https://chatstream.net/?ws_name=chat_app&mult=1&ontp=1&isync=1&model_id=llama_3_elyza_jp_8b&model_id=openai_gpt_3_5_175b

「Llama-3-Elyza-JP-8B」 vs 「RakutenAI-7B-chat」 vs 「GPT-3.5」で三つ巴で比較

さらにクエリにmodel_id を追加することで、 RakutenAI-7B-chat も入れて三つ巴で比較するには以下のようにします。

https://chatstream.net/?ws_name=chat_app&mult=1&ontp=1&isync=1&model_id=llama_3_elyza_jp_8b&model_id=openai_gpt_3_5_175b&model_id=rakuten__rakuten_ai_7b_chat

構成

今回作った Llama-3-Elyza-JP-8B 用の構成は以下のようになります。

ChatStream SDK は、サーバー側はDocker 化されているため、
コンテナを動作させるGPUサーバーさえ準備できれば、モデルの準備から公開までトータル30分程度です。モデル並列などスケールアウトも数分~数十分程度で可能ですので、最新のモデルをすぐにお客様に届けることが可能です。

動画

一連の内容を動画にまとめました。

まとめ

最後までお読みいただき、誠にありがとうございます。私たちQualitegは、LLMをはじめとするAI技術、開発キット・SDKの提供、LLMサービス構築、AI新規事業の企画方法に関する研修およびコンサルティングを提供しております。

今回ご紹介したChatStream🄬 SDK を使うと、最新のオープンソースLLMや、最新の商用LLMをつかったチャットボットをはじめとした本格的商用LLMサービスを超短納期で構築することが可能です。

もしご興味をお持ちいただけた場合、また具体的なご要望がございましたら、どうぞお気軽にこちらのお問い合わせフォームまでご連絡くださいませ。

LLMスポットコンサルご好評です

また、LLMサービス開発、市場環境、GPUテクノロジーなどビジネス面・技術面について1時間からカジュアルに利用できるスポットコンサルも実施しておりますのでご活用くださいませ。

(繁忙期、ご相談内容によっては、お受けできない場合がございますので、あらかじめご了承ください)

Read more

LLM推論基盤プロビジョニング講座 第3回 使用モデルの推論時消費メモリ見積もり

LLM推論基盤プロビジョニング講座 第3回 使用モデルの推論時消費メモリ見積もり

こんにちは!前回はLLMサービスへのリクエスト数見積もりについて解説しました。今回は7ステッププロセスの3番目、「使用モデルの推論時消費メモリ見積もり」について詳しく掘り下げていきます。 GPUメモリがリクエスト処理能力を決定する LLMサービス構築において、GPUが同時に処理できるリクエスト数はGPUメモリの消費量によって制約されます。 つまり、利用可能なGPUメモリがどれだけあるかによって、同時に何件のリクエストを処理できるかがほぼ決まります。 では、その具体例として、Llama3 8B(80億パラメータ)モデルをNVIDIA RTX A5000(24GB)にロードするケースを考えてみましょう。 このGPUには24GBのGPUメモリがありますが、すべてをリクエスト処理に使えるわけではありません。最初にモデル自体が一定量のメモリを消費し、残りの領域で実際のリクエスト処理を行います。 GPUメモリ消費の二大要素 GPUの消費メモリ量は主に以下の2つの要素によって決まります 1. モデルのフットプリント LLMをGPUに読み込んだときに最初に消費されるメモリ

By Qualiteg コンサルティング
システムとcondaのC++標準ライブラリ(libstdc++)のバージョン違い問題による事象と対処法解説

システムとcondaのC++標準ライブラリ(libstdc++)のバージョン違い問題による事象と対処法解説

こんにちは! 先日、dlibをつかったPythonアプリケーション(conda環境で動作する)作っていたところ、以下のようなエラーに遭遇しました。 ImportError: /home/mlu/anaconda3/envs/example_env/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.32' not found (required by /home/mlu/anaconda3/envs/example_env/lib/python3.10/site-packages/_dlib_pybind11.cpython-310-x86_64-linux-gnu.so) 「dlib_pybind11モジュールがGLIBCXX_3.4.32を要求してるけど、みつからない!」という感じのエラーですね。

By Qualiteg プロダクト開発部
LLM推論基盤プロビジョニング講座 第2回 LLMサービスのリクエスト数を見積もる

LLM推論基盤プロビジョニング講座 第2回 LLMサービスのリクエスト数を見積もる

こんにちは! 今回はLLM推論基盤プロビジョニング講座 第2回です! STEP2 LLMサービスへのリクエスト数見積もり それでは、早速、LLM推論基盤プロビジョニングの第2ステップである「リクエスト数見積もり」の重要性と方法を解説いたします。 LLMサービスを構築する際に必要となるGPUノード数を適切に見積もるためには、まずサービスに対して想定されるリクエスト数を正確に予測する必要があります。 リクエスト数見積もりの基本的な考え方 LLMサービスへの想定リクエスト数から必要なGPUノード数を算出するプロセスは、サービス設計において非常に重要です。過小評価すればサービス品質が低下し、過大評価すれば無駄なコストが発生します。このバランスを適切に取るための基礎となるのがリクエスト数の見積もりです。 想定リクエスト数の諸元 リクエスト数を見積もるための5つの重要な要素(諸元)をみてみましょう。 1. DAU(Daily Active Users): 1日あたりの実際にサービスを利用するユーザー数です。これはサービスの規模を示す最も基本的な指標となります。 2. 1日

By Qualiteg コンサルティング
Zoom会議で肩が踊る?自動フレーミング映像安定化とAIによる性能向上の可能性

Zoom会議で肩が踊る?自動フレーミング映像安定化とAIによる性能向上の可能性

こんにちは! 本日は、自動フレーミング映像の安定化に関するアルゴリズム・ノウハウを解説いたします 第1章 問題の背景と目的 バストアップ映像を撮影する際、特にオンラインミーティングやYouTubeなどのトーク映像では、人物がうなずく、首を振るなどの自然な動作をした際に「首まわりや肩がフレーム内で上下に移動してしまう」という現象がしばしば起こります。これは、多くの場合カメラや撮影ソフトウェアが人物の「目や顔を画面中央に保とう」とする自動フレーミング機能の働きに起因します。 撮影対象の人物が頭を下げた際に、映像のフレーム全体が相対的に上方向へシフトし、その結果、本来動いていないはずの肩の部分が映像内で持ち上がっているように見えてしまう現象です。 本稿では、この問題を撮影後の後処理(ポストプロセッシング)のみを用いて、高速、高い精度かつロバストに解決する手法をご紹介します。 前半では、従来のCV(コンピュータービジョン)の手法を使い高速に処理する方法をご紹介します。後半では、AIを使用してより安定性の高い性能を実現する方法について考察します。 第2章 古典手法による肩の上下

By Qualiteg 研究部