ページの先頭です

ページ内を移動するためのリンク
本文へ (c)

ここから本文です。

Open LLMでのテキスト生成環境を考える

前回はオープンLLMの解説と実際に動作をさせてみて回答を生成しました。今回はオープンLLMを動作させる環境を検証しながら考えます。

ライター:荒牧 大樹
2007年ネットワンシステムズ入社し、コラボレーション・クラウド製品の担当を経て現在はAI・データ分析製品と技術の推進に従事。最近では次世代の計算環境であるGPU・FPGA・量子コンピュータに注目している。

目次

【更新日】2023/11/8

オープンLLMを動作させてみる

クラウド環境とオンプレミス環境を用意して、LLaMA2を利用して文章生成のテストを行いました。

クラウドでのオープンLLMの動作について

今回はDatabricks上でLlama2を読み込んで、LLMでの文章作成を行いました。文章生成を動作の確認についてはDatabricksが提供しているGitHub上の以下のサンプルのコードを利用しました。AWS上のクラスターのノードは推奨にある、g5.2xlargeを利用しました。GPUとしてはA10が利用されています。

https://github.com/databricks/databricks-ml-examples/tree/master/llm-models/llamav2

オンプレミスでのオープンLLMの動作について

NVIDIAA100 80G(以下 A100)が搭載されたサーバを用意しました。NVIDIANVAIを使って、様々なGPUメモリでの環境を用意して動作確認を行いました。Databricks上で利用したのと同様のPythonスクリプトをJupyter-notebook上で実行して動作確認をしています。実行するに辺り、以下のパッケージを追加でpipコマンドを利用してインストールしました。

huggingface_hub, transformers, ipywidgets, torch, matplotlib, xformers, accelerate

動作検証の結果

実機でLlama 2を動作させてみて、以下動作環境と文章生成の性能について以下がわかりました。

オープンLLMの動作環境について

オープンLLMの動作環境について、モデルサイズとメモリ使用量の関係や、GPUが複数毎用意されている場合について検証しました。

モデルサイズと使用メモリ

モデルのサイズによって、GPUのメモリに必要なサイズが変わってきます。NVIDIAのサーバ向けGPUA1020Gのメモリ、A10080Gのメモリを搭載しています。Llama 2のモデルサイズは7B/13B/70Bのモデルサイズが用意されています。実機を使って実際のモデルを動作させて、nvidia-smiコマンドでメモリの使用量を確認しました。結果は以下の表にまとめています。

モデルサイズ

7B

13B

70B

GPUメモリ使用量

16G

28G

136G

A10

1

2

-

A100

1

1

2

13BのモデルをA100に載せる場合は80GのメモリをvGPUの機能で40G+40G2分割して利用も良いと考えられます。サーバ側のメモリはGPU側にモデルをロードする時にGPUと同程度のメモリが最低限必要となります。利用方法によって変わりますが、最低限GPUメモリ量+10G-20G程度のサーバメモリの用意は必要です。

複数GPUでの動作

複数のGPUがサーバに搭載されている場合は、モデルが分割されて均等に割り付けられて動作します。70Bのモデルであれば、2枚のGPUのそれぞれのメモリ利用量が68Gとなっています。今回の環境はNVLINKは利用していないためGPU同士はPCIバスを通じた接続になっています。

環境による文章生成時間の違い

7Bモデル・13Bモデル・70Bモデルで環境によって文章生成と文章要約にどの程度時間がかかるかを比較検討しました。文章生成と文章要約のタスクを用意しています。結果はToken数を、経過時間で割った数となっており、1秒で処理したToken数を表しています。文章生成は500 tokenの文章を生成しています。文章要約は777 tokenの文章を要約して200 token程度を生成しています。条件によって結果は変わりますので、参考程度と考えてください。コードは前出のDatabricks社のコードのInferenceの項目にある計測のコードを利用しています。

7Bのモデル

Databricks: A10

A100 40G(分割)

A100 x 1

生成

25

38.35

36.21

要約

182.28

183.58

200.00

13Bのモデル

A100 40G(分割)

A100 x 1

A100 x 2

生成

23.71

37.12

28.69

要約

136.674

184.00

192.62

70Bモデル

A100 x 2

生成

9.2

要約

42.4

オープンLLMの環境を用意する

オープンLLMの環境をオンプレミスと、クラウドで用意する場合について検討したいと思います。

オープンLLMの推論環境をオンプレミスに用意する

*以下の価格情報は一般的な価格を参考にしています。ネットワンがお客様に提供する価格とは違う点にご注意ください。

GPT-3クラスの70Bを利用する事を考えます。70BのモデルはA1002枚必要です。今回は同時接続を4セッションとして、8枚のGPUを用意すると総額システムとして3400万円程度が必要となります。

数量

単価

金額

A100

8

300万円

2400万円

サーバ

2

500万円

1000万円

3400万円

運用費用の中でコストが心配なのはGPUの電力使用料です。GPUは文章生成中に最大電力を使用します。A100GPUの最大消費電量は300Wとして、年間稼働時間を労働時間と同様の2080時間とします。そして、300W1時間当たりの電力料金を9.3円とすると以下になります。

GPU年間電力使用料金 : 9.3x 2080時間 x 8= 154,752

GPUのライフサイクルを考えるとA100は実質的には3年程度は現役として利用できると考えられます。3年利用できるシステムの総額は以下になります。

システム料: 3400万円 + 154,752 x 3 = 3446万円

これを、1セッションの年間利用料に換算すると以下になります。

年間利用料/セッション : 3446万円 ÷ 3 ÷ 4セッション = 287万円

様々なタスクを割り当ててフル稼働出来ればコストとしては、極端に悪いとは言えないと思います。

オープンLLMの環境をクラウドで用意する

クラウド上のA100を利用した場合を考えます。クラウドのGPUのインスタンスは連続稼働すると、高額となりますので、利用してない時間帯にこまめに落とせるかがキーになります。オンプレミスと同様のA100 80Gを搭載したサーバの利用を前提としています。同様の条件でLlama 70B4セッション用意する場合、Azureの場合であれば、NC48ads A100 v44台か、NC96ads A100v42台用意する事になります。両方の価格感は変わらない為今回はNC48ads A100 v44台としました。East USとし、連続稼働の場合は3年節約プランを利用します。

パターン

4 台連続稼働

1台連続稼働

3台労働時間内稼働

4台労働時間内稼働

3年使用料金

6,728万円

3,588万円

2,590万円

年間使用料 / 4 セッション

560万円

299万円

215万円

費用を見ると、1セッション連続稼働として、残りは労働時間外には落としておくとオンプレでGPU購入した場合と同様の価格感で利用できます。

*クラウド利用料は2023823日に以下サイトで確認した価格になっています。

従量課金プラン : ¥1,037.6592/時間 / 3年節約プラン : ¥1,037.6592/時間

https://azure.microsoft.com/ja-jp/pricing/details/virtual-machines/windows/

所感

モデルサイズに対してGPUメモリが十分あれば、動作はそこまで変わらないようです。70Bのモデルは負荷が大きいのか、極端に性能低下していました。また、様々なタスクを、置き換えられるのであれば、推論の環境は70Bのモデルを利用しても十分にコストメリットが出ると考えられます。

※本記事の内容は執筆者個人の見解であり、所属する組織の見解を代表するものではありません。

RECOMMEND