【Llama2】Windows GPUでの使い方 | ローカル環境
この記事では、ローカルのWindows環境を使ってLlama2によるテキスト生成をする方法(推論)について紹介しています。
目次[非表示]
Llama2とは
Llama2(ラマツー)とは、Facebookを運営するMeta社が開発した言語生成AI(LLM)で、OpenAI社のChatGPTに匹敵するの性能を持っています。
Llama2の特徴としては、軽量モデルで高性能、そして無料で使えるオープンソースであるため、
開発者にとって扱いやすいモデルになっています。
Llama2の詳細については、以下の記事で解説しています。
Metaへのモデル利用申請とHuggingFaceの設定
Llama2を利用する前に、Meta社へのモデル利用の申請とHuggingFaceの設定の準備を行います。
設定が完了したら、HuggingFaceのアクセストークンを後で使いますので、メモしておきます。
Metaへのモデル利用申請・HuggingFaceの設定方法について、以下の記事で詳しく解説しています。
実行環境
この記事では以下のスペックのローカル環境のWidows PCを使用しました。
- OS:Windows 11
- GPU:NVIDIA A4000
- GPUメモリ(VRAM):16GB
NVIDIAドライバのアップグレード
NVIDIA Driverを最新版にアップグレードします。(NVIDIAドライバ515以上)
NVIDIAドライバダウンロードのページを開きます。
ご使用のGPUのタイプにあわせて項目を選択します。
[オペレーティングシステム]はお使いのOSを選択してください。
[ダウンロードタイプ]は”Studio”が含まれる項目を選択してください。
項目を選択したら、[探す]ボタンを押します。
以下はGPUがNVIDIA RTX A4000の場合の例です。
続けて[ダウンロード]ボタン、[ダウンロードの同意]をクリックし、インストーラーをダウンロードします。
ダウンロードした[インストーラー]を実行し、インストールを開始します。
[NVIDIAインストーラーが終了しました]の表示がでたら、NVIDIAドライバのインストールが完了です。
WSL・Ubuntuのインストール
[スタート]から[コマンドプロンプト]を開きます。
コマンドプロンプトで次のコマンドを実行し、wsl2およびUbuntuをインストールします。
[Enter new UNIX username:] と表示がされるのでユーザー名を設定します。
この記事では”user”をユーザー名として設定します。
[New password:] と表示がされるので任意のパスワードを設定します。
Windowsを再起動し、変更を有効化します。
コマンドプロンプトで次のコマンドを実行し、WSLのバージョンを確認します。
VERSIONが[1]の場合は、次のコマンドを実行し、既存のディストリビューションをWSL2 に変更します。
※VERSIONが既に[2]の場合は、このステップは飛ばしてください。
Wiindowsの[スタート]から”Ubuntu”を検索し、起動します。
Dockerのリポジトリを設定する
Ubuntuのコマンドラインからapt パッケージを更新します
必要なパッケージをインストールします。
DockerのGPGキーを保存するためのディレクトリを作成します。
Dockerの公式GPGキーをダウンロードし、ディレクトリに格納します。
ファイルのアクセス許可を変更して、読み取り可能にします。
DockerのAPTリポジトリを /etc/apt/sources.list.d/docker.listファイルに追加します。
aptパッケージをアップデートします。
Dockerをインストールする
docker最新版をインストールします。
NVIDIA Container Toolkitのインストール
リポジトリとGPGキーのセットアップをします。
パッケージをアップデートします。
nvidia-container-toolkitをインストールします。
Dockerデーモンの設定
NVIDIA コンテナー ランタイムを認識するように Docker デーモンを構成します。
デフォルトのランタイムを設定した後、Docker デーモンを再起動してインストールを完了します。
Dockerを使用するためにユーザーをDockerグループに追加する
新しいグループにユーザーを切り替えます。
再度Dockerを再起動します。
docker-composeファイルの作成
次をインストールするdocker-composeのファイルを作成します。
- cuda11.8
- cuDNN8
- ubuntu22.04
- Pytorch2.1.0
- JupyterLab
docker-compse.ymlファイルを新規作成し、開きます。
開いたdocker-compose.ymlファイルに次のコマンドをコピペします。
編集が完了したら、[Ctrl]+[S]で変更を保存し、[Ctrl]+[X]で編集モードから抜けます。
次のコマンドを実行し、docker-composeをインストールします。
次のコマンドを実行し、dockerイメージのビルドとコンテナの起動を行います。
[Jupyter Server is running at : http://localhost:8888/lab]の表示ができたら、Jupyter Serverの起動完了です。
ブラウザの検索窓に”localhost:8888”を入力すると、Jupyter Labをブラウザで表示できます。
停止するときは、コマンドプロンプトの画面で[Ctrl] + [C]を押すとコンテナが停止します。
もしくは次のコマンドでコンテナを停止します。
コンテナを再起動するときは次のコマンドを実行します。
必要なパッケージをインストール
Jupyter Labのホーム画面で[Python3 ipykernel]を選択し、Notebookを開きます。
Jupyter Labのコードセルで次のコマンドを実行し、必要なパッケージをインストールします。
次のコマンドを実行し、必要なライブラリをインポートします。
PyTorchからGPUを認識できるか確認します。
モデルの設定
HuggingFaceで利用申請したLlamaのモデルを読み込みます。
この段階でモデルがGPUメモリにロードされますので、しばらく時間がかかります。
この記事ではLlama-2-7b-chat-hfのパラメータ7bのチャットモデルを使用していますが、他のモデルを使いたい場合は表を参考に適宜model_idを変更してください。
model_id |
GPUメモリ(VRAM)使用量 ※モデルには4bit量子化を使用 |
ストレージ使用量 |
使用したGPU |
meta-llama/Llama-2-7b-hf |
6.7GB |
13GB |
NVIDIA A4000 16GB x 1 |
meta-llama/Llama-2-13b-hf |
10.3GB |
25GB |
NVIDIA A4000 16GB x 1 |
meta-llama/Llama-2-70b-hf |
37.9GB |
129GB |
NVIDIA A100 80GB x 1 |
meta-llama/Llama-2-7b-chat-hf |
6.7GB |
13GB |
NVIDIA A4000 16GB x 1 |
meta-llama/Llama-2-13b-chat-hf |
10.1GB |
25GB |
NVIDIA A4000 16GB x 1 |
meta-llama/Llama-2-70b-chat-hf |
37.9GB |
129GB |
NVIDIA A100 80GB x 1 |
HuggingFaceにアクセスするためのトークンを設定します。
HuggignFaceでのアクセストークンの発行方法は以下の記事で解説しています。
モデルの量子化の設定を行います。
量子化は、モデルのパラメータや活性化関数などを低bitに変換する技術で、モデルサイズを軽量化することができます。
[llm_int8_enable_fp32_cpu_offload=True]は、モデルの一部分をGPUで処理して、その他の部分をCPU上でオフロードするフラグになります。CPUでオフロードする場合、生成時間がかかりますので、GPUメモリが十分にある場合はこのフラグは削って構いません。
モデルを読み込みます。初回はモデルをダウンロードするため時間がかかりますが、
2回目以降はモデルの読み込みだけになりますので、時間はかかりません。
トークナイザーを読み込みます。
transformersライブラリの pipeline 関数を使用して、テキスト生成のためのパイプラインを構築します。
テキスト生成(推論)
プロンプトの実行
transformers.pipelineのrepetition_penalty=1.1について質問をしてます。
生成結果
日本語翻訳
LLMならGPUクラウド
Llama2やその他のLLMを使用する際には、モデルサイズやタスクに応じて必要なスペックが異なります。
LLMで使用されるGPUは高価なため、買い切りのオンプレミスよりも、コストパフォーマンスが高く柔軟な使い方ができるGPUクラウドをおすすめしています。
GPUクラウドのメリットは以下の通りです。
- 必要なときだけ利用して、コストを最小限に抑えられる
- タスクに応じてGPUサーバーを変更できる
- 需要に応じてGPUサーバーを増減できる
- 簡単に環境構築ができ、すぐに開発をスタートできる
- 新しいGPUを利用できるため、陳腐化による買い替えが不要
- GPUサーバーの高電力・熱管理が不要
コスパをお求めなら、メガクラウドと比較して50%以上安いGPUクラウドサービス「GPUSOROBAN」がおすすめです。
大規模なLLMを計算する場合は、NVIDIA H100のクラスタが使える「GPUSOROBAN AIスパコンクラウド」がおすすめです。
まとめ
この記事では、Windowsの環境でLlama2を用いて推論をする方法を紹介しました。
Llama2は無料で使えて商用利用可能な利便性の高いモデルでありながら、ChatGPTと同等以上の性能があります。
Llama2に関する詳細な情報は、以下の記事でまとめて紹介していますので、あわせてご覧ください。