はじめに
こんにちは、CTOの大柿です。
ローカルLLMとして高額なGPUがなくとも動作するLLMや量子化したLLMが数多く公開されてきており、実際どれが使えるのか、どの程度のコストが必要なのかという疑問がわきます。
今回ローカルLLMをAWS EC2で実行するための最低限なインスタンスタイプを比較・検証してみます。ローカルLLMの利用は、コスト削減やデータプライバシーの観点から非常に魅力的です。しかし、適切なインスタンスタイプを選ばないと、期待するパフォーマンスが得られない可能性があります。
まず最初のステップとしてローカルLLMが最低限動作し、1分以内で出力結果を得られるスペックを探ってみたいと思います。
テスト環境と条件
- EC2インスタンスタイプ
- c7i.4xlarge:GPU無しのインスタンス
- g4dn.xlarge:NVIDIA GPUを搭載
- g5g.xlarge:NVIDIA GPUとARMアーキテクチャを採用
- LLMフレームワーク: Ollama(llama.cppをバックエンドに持つ)
- モデル
- phi3(3B) phi3:mini
- phi3(14B) phi3:medium
- gemma(7B)
- gemma2(9B)
- qwen2(7B)
の各量子化モデルを利用します。
検証用プロンプト
ある果物屋で、りんごが3個で150円、オレンジが2個で200円です。りんご2個とオレンジ3個を買うといくらになりますか?
ステップバイステップで考えてみましょう。
Chain-of-Thought (CoT) の形式としました。
EC2インスタンスタイプの説明
インスタンスタイプ | GPU等 | CPU | メモリ | 料金($/Hour) | 料金($/Month) | 料金(円/Month) |
---|---|---|---|---|---|---|
c7i.4xlarge | GPU無し | 16 vCPU | 32 GB | 0.8988 | 647.136 | 103,541 |
g4dn.xlarge | 1GPU NVIDIA T4 16GB | 4 vCPU | 16 GB | 0.71 | 511.2 | 81,792 |
g5g.xlarge | 1GPU NVIDIA T4G 16GB | 4 vCPU AWS Graviton2 (ARM系) | 8 GB | 0.5669 | 408.168 | 65,306 |
補足
- 料金:2024年7月時点、オンデマンド料金、東京リージョン
- 料金($/Month)は 30日間での計算
- 料金(円/Month)は1ドル160円で計算。1円未満切り捨て。
パフォーマンス計測方法
検証用VPCに検証サーバーを構築し、同VPC内に構築したCloudShellからOllama APIを curlコマンドによりレスポンス時間計測。
計6回計測し、初回を除く5回の平均値を集計。(初回はモデルのロードに時間がかかるため除外)
APIリクエスト
curl -X POST https://{ollama_host}/api/generate -d '{"model": "phi3:medium", "stream":false, "keep_alive":"5m", "options":{"temperature":0}, "prompt":"ある果物屋で、りんごが3個で150円、オレンジが2個で200円です。りんご2個とオレンジ3個を買うといくらになりますか?ステップバイステップで考えてみましょう。"}'
APIパラメータ補足
- keep_alive : リクエスト後のモデルがメモリに保持されたままになる時間
- temperature : LLMの出力について、この値が低いほど最も確率が高い回答が選択され、出力は固定化されます。この値を上げると、ランダム性が増すため創造的な出力になります。この検証では出力長の影響を最小化させたかったため 0としました。
その他、Ollama APIドキュメントを参照ください。
github.com
パフォーマンス計測結果
モデル名 | phi3:mini | phi3:medium | gemma | gemma2 | qwen2 | |
---|---|---|---|---|---|---|
LLMパラメータサイズ | 3.82B | 14B | 8.54B | 9.24 | 7.62B | |
量子化 | Q4_0 | Q4_0 | Q4_0 | Q4_0 | Q4_0 | |
インスタンスタイプ | ||||||
c7i.4xlarge | 10.4秒 | 57.8秒 | 9.6秒 | 24秒 | 22.2秒 | |
g4dn.xlarge | 3秒 | 16秒 | 2秒 | 7秒 | 5.4秒 | |
g5g.xlarge | 3秒 | 21.6秒 | 3秒 | 8.4秒 | 6秒 |
結論
今回の検証で得られたパフォーマンスとコスト比較において、 g5g.xlarge がベストだと感じました。
ARMベースの低料金およびGPUを搭載したモデルとなります。
g4dn.xlargeの方が、g5g.xlargeより若干高速な結果となりますが差はごくわずかであり、対費用を考慮すると現時点では g5g.xlarge が妥当と考えました。
当然ながら今回の要件、検証方法での結果となりますが、このデータを基準としてそれぞれの要件に合わせてスペックやインスタンスタイプを検討頂ければと思います。
レイ・フロンティア株式会社では、位置情報データの活用した機械学習処理や分析など多くの実績を持っており、生成AIやLLM活用のご相談も受け付けております。興味をお持ちいただいた方はお気軽にお問い合わせください。
おまけ
各モデルの出力結果を参考として記載します。
内容の是非は今回は考慮しておりませんが、パラメータサイズが大きなモデルほど正解を得やすいことが分かります。プロンプトの内容によってはこれらのパラメータサイズでも難しい場面は多いため要件に合わせて検討ください。
モデル名 | LLM出力 (g5g.xlargeでの出力) |
---|---|
phi3:mini | まず、りんごの価格を計算します。1つのりんごが150円なので、2つあると2 * 150 = 300円になります。次にオレンジの価格を計算します。1つのオレンジが200円なので、3つあると3 * 200 = 600円になります。最 後に、りんごとオレンジの合計価格を求めます。300円(りんご)+ 600円(オレンジ)= 900円です。したがって、2つのりんごと3つのオレンジを買うと合計で900円となります。 |
phi3:medium | この問題を解決するために、以下の手順に従います:\n\n1.りんご2個とオレンジ3個の合計費用を求めます。\n2.ステップ1で見つけた金額が最終的な答えになります。\n\nそれでは、各手順を実行してみましょう:\n\nステップ1:りんご2個とオレンジ3個の合計費用を求める\n- りんごが3個で150円なので、りんご2個は(150/3)*2 = 100円になります。\n- オレンジが2個で200円なので、オレンジ1個は200/2=100円です。したがっamoe, orange3個は(100*3)= 300円になります。\n- りんご2個とオレンジ3個の合計費用を求めるために、それぞれの金額を加算します:100 + 300 = 400円。\n\nステップ2:最終的な答えは400円です。 |
gemma | りんご2個とオレンジ3個を使う場合、りんごの料金は3個分の150円 × 2 = 300円、オレンジの料金は2個分の200円 × 3 = 600円になります。したがって、りんご2個とオレンジ3個を使う場合、合計料金は300円 + 600 円 = **900円**となります |
gemma2 | ## りんご2個とオレンジ3個の値段を計算してみましょう!\n\n**ステップ1: りんご2個の値段を計算する**\n\n* りんごが3個で150円なので、1個は150円 ÷ 3個 = 50円です。\n* りんご2個の値段は 50円 × 2個 = 100円です。\n\n**ステップ2: オレンジ3個の値段を計算する**\n\n* オレンジが2個で200円なので、1個は200円 ÷ 2個 = 100円です。\n* オレンジ3個の値段は 100円 × 3個 = 300円です。\n\n**ステップ3: りんご2個とオレンジ3個の合計金額を計算する**\n\n* りんご2個の値段 + オレンジ3個の値段 = 合計金額\n* 100円 + 300円 = 400円\n\n\n**答え:** りんご2個とオレンジ3個を買うと、400円となります。 |
qwen2 | まず、りんごの単価を計算します。\n\nりんごは3個で150円なので、1個あたりの値段は \\(150 \\div 3 = 50\\) 円です。\n\n次に、オレンジの単価を計算します。\n\nオレンジは2個で200円なので、1個あたりの値段は \\(200 \\div 2 = 100\\) 円です。\n\n次に、りんごとオレンジの購入量を計算します。\n\nりんごを2個、オレンジを3個買うので、それぞれの総費用は以下のようになります:\n\nりんご: \\(50 \\times 2 = 100\\) 円\nオレンジ: \\(100 \\times 3 = 300\\) 円\n\n最後に、両者の合計を計算します。\n\n\\(100 + 300 = 400\\) 円\n\nしたがって、りんご2個とオレンジ3個を買うと、総額は400円になります。 |
お知らせ
毎日の振り返る楽しさを「プラス」するアプリSilentLogの公式サイトはこちらです。
silentlog.com
インストールはこちら。
【Android版】
play.google.com
【iPhone版】
レイ・フロンティアの公式サイトはこちらです。
www.rei-frontier.jp
個人向けスマートフォンアプリの開発運用、及び、法人向けに独自の移動データの収集・推定技術を強みとした、サービスの企画提案コンサルティング、アプリケーションデザイン・開発、運用中のカスタマーサクセス支援(開発・技術支援等)を行っております。
レイ・フロンティアでは共に未来を切り開く仲間を募集しております。ご興味がある方はお気軽にお問い合わせください。
www.rei-frontier.jp
【本件に関するお問い合わせ】
お手数ですが、弊社お問い合わせページよりご連絡ください。
www.rei-frontier.jp