AWS内に完結して動作するLLMチャットを構築するソリューションを、GitHubで公開しました。🎉🎉🎉
動作イメージ
文字入力部分は編集していますが、LLMのリクエストレスポンス部分は等速です。かなりレスポンスが良いこともわかるかと思います。
日本語精度も良いです!ありがとう、ELYZAさん!!
仕組み
Hugging Faceで公開されているLLMモデルをSageMakerにデプロイします。チャット画面はOSSで公開されているHuggingChatを使用します。
使用するLLMモデルはelyza/ELYZA-japanese-Llama-2-7b-fast-instructです。Llama2をベースに日本語能力を拡張するための追加学習がさてているとのことです。
アーキテクチャ
-
AWS
- EC2 (Amazon Linux 2023, t2.small)
- SageMaker (ml.g4dn.12xlarge)
- CDK
-
ソフトウェア
MongoDBはチャット履歴の保存に使用されるようです。DocumentDBの採用を検討しましたが、Partialインデックス機能がサポートされていないとのことで利用できませんでした。
また、HuggingChatの実装は、AWSの認証情報(アクセスキー、シークレットキー)をenvファイルに記述する方式となっていましたが、AWS SDKを使用するように一部修正しています。(コミット)
デプロイ手順
AWS CloudShellで実行します。
-
ソースを取得
mkdir chatui cd chatui git clone https://github.com/moritalous/chat-ui.git
-
デプロイスクリプトを実行
スクリプト内でSageMakerエンドポイントの作成と、CDKでVPCとEC2の環境を構築します。EC2内の環境はユーザーデータにてセットアップが実施されます。
cd chat-ui/aws sh ./deploy.sh
これだけで構築完了!
デプロイスクリプト(SageMakerの作成、CDKの実行)は約10分程度で完了します。CDKの完了後にユーザーデータが実行されます。ユーザーデータの完了までは5分ほどかかります。
環境が構築できたらhttp://[EC2パブリックドメイン]:80
へアクセスすることでチャットを開始できます。
HTTPS化や認証機能は含まれていませんのでご注意ください。
廃棄手順
-
削除スクリプトを実行
cd chat-ui/aws sh ./destroy.sh
廃棄も一発です。
よかったら使ってみてください😀