ChatGPT、Amazon Bedrock、Google Bard などのサービスを使用する代わりに、ローカルでチャットボットを実行するために使用できるオープンソースの大規模言語モデルがいくつかあります。GPT4ALL はそのようなオプションの 1 つです。
このことから、AWS Lambda 関数内で LLM を実行できないか疑問に思いました。これらは通常、小さく、実行速度が速く、イベント駆動型の関数です。これらは複雑な処理タスクに使用することを意図したものではありませんが、ゼロまでスケールし、使用した分だけ料金を支払います。 Lambda 関数内に LLM を含めるのは楽しい実験であり、長時間実行されるプロセスを必要としないホストされたモデルを作成する方法のように思えます。
このリポジトリには、コンテナイメージを使用してカスタムランタイム AWS Lambda 関数を作成するコードが含まれています。テストのために Docker 内でローカルに実行することもできます。この関数には完全な LLM モデルとそのモデルを使用するコードが含まれており、HTTP 呼び出しから基本的なテキストを生成できます。
これは以下を使用します:
GPT4ALL モデルをダウンロードします。これには、応答性の良い小型モデル (4GB...) であるため、gpt4all-falcon-newbpe-q4_0.gguf を使用しました。他のモデルも動作するはずですが、Lambda のメモリ制限内に収まる程度に小さい必要があります。
bin
ファイルをfunction
フォルダー内の lambda_function.py ファイルの隣に配置します。
docker を使用してイメージをビルドします: docker build --platform linux/amd64 -t makgpt:test1
。
ビルドしたら、ローカルで実行できます: docker run -p 9000:8080 makgpt:test1
実行後は、 curl "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{"body":"{"action":"Set fire to a tree"}"}'
など、別のターミナル ウィンドウで呼び出しを実行できます。 curl "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{"body":"{"action":"Set fire to a tree"}"}'
イメージを AWS アカウント内の ECR にプッシュします。これについては、開発者ガイドのDeploying the image
にある AWS ガイドに従ってください。簡単な手順は次のとおりです。
aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 111122223333.dkr.ecr.us-east-1.amazonaws.com
aws ecr create-repository --repository-name hello-world --image-scanning-configuration scanOnPush=true --image-tag-mutability MUTABLE
docker tag docker-image:test :latest
docker tag docker-image:test 111122223333.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest
docker push 111122223333.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest
このイメージから Lambda 関数を作成し、十分なメモリ (10 GB を推奨) と少なくとも 5 分のタイムアウトを確保します。
簡単にするために、Lambda 関数に関数 URL を指定すると、HTTP 経由で関数 URL にアクセスできるようになります。
次に、 curl "https://INSERTHERE.lambda-url.us-east-1.on.aws/" -d '{"body":"{"action":"Set fire to a tree"}"}'
この機能は、次のプロンプトを備えた基本的なテキスト アドベンチャー ゲームとして準備されています。
You are a Text-Based Fantasy RPG. The player is exploring the dark forest and you are the dungeon master. The player performs the action: {action} What happens next? You are talking to the player.
{
"action": "Throw your sword at the angry orc"
}
"nAs the player throws their sword at the angry orc, it strikes true and lands squarely in its chest. The orc roars in pain and anger, charging towards the player with a fierce look in its eyes.nnThe player quickly dodges out of the way, but not before noticing something strange about the orc's eyes. They seem to be glowing with an otherworldly light, as if they are possessed by some dark force.nnWith the orc now dangerously close, the player decides to take a risk and try to reason with it. "Stop! I mean you no harm," they say, holding out their hands in a gesture of peace.nnTo their surprise, the orc seems to understand them and hesitates for a moment before continuing its attack. The player quickly grabs their sword and prepares to defend themselves if necessary.nnAs the fight continues, it becomes clear that this orc is not like any other they have faced before. Its movements are unnaturally quick and its strength is unmatched. But with each blow of the sword, the player gains a little more confidence in their abilities.nnFinally, after what seems like an eternity, the orc falls to the ground, defeated."
所要時間: 1m 33s
{
"action": "A wizard casts a spell on the player and turns them into a pencil"
}
"nAs the wizard finishes casting his spell, the player suddenly finds themselves transformed into a pencil. They look down at their new form in confusion before noticing that they are no longer holding the wand they were using to cast spells.nnThe player tries to move around, but find that they are unable to do so without making a noise. They try to speak, but find that they cannot make any sounds with their new pencil body.nnSuddenly, they hear a voice from behind them. "Well, well, well. Look who we have here." The player turns around to see the wizard who cast the spell on them.nnThe wizard chuckles at the player's transformation and begins to speak in a mocking tone. "I bet you didn't expect this when you decided to mess with magic, did you?"nnThe player tries to respond, but finds that they are unable to do so without making any noise. They feel helpless and frustrated as they try to come up with a plan to escape their new form.nnWhat will the player do next?"
所要時間: 1m 1s