Docker を使用して LLaMA2 オープンソース大規模モデルの公式バージョンをすぐに使い始める

この記事では、Docker コンテナーを使用して、Meta AI によって生成された LLaMA2 オープン ソースの大規模モデルをすぐに使い始める方法について説明します。

前に書いてある

昨日はとても忙しく、午前中に LLaMA2 モデルのダウンロード許可を申請した後、夕方まで Docker コンテナの運用ソリューションに手を出さず、このコンテナがどうなったのか、どのように使用するのかについて記事を書く時間がありませんでした。

それでは、LLaMA2 正式版の大規模モデルをすぐに始める方法について説明しましょう。

Docker LLaMA2 Chat オープンソース プロジェクト

完全なオープンソース プロジェクト コードをsoulteary/docker-llama2-chatにアップロードしました。必要な学生は自分で入手できます。

まずは一緒に準備作業をしていきましょう。

準備

準備作業には、モデル ファイルの準備とモデルの実行環境の準備の 2 つの主な手順があります。

モデルの実行環境については、以前の記事「Docker ベースの深層学習環境: 入門」で説明したので詳細は省略しますが、まだ詳しくない学生は参考に読んでください。

Docker 環境をインストールし、Docker コンテナーでグラフィックス カードを呼び出すことができる基本環境を構成していれば、次のステップに進むことができます。

モデルのダウンロード

LLaMA2 をローカルにデプロイするには、まずモデル ファイルのダウンロード許可を申請する必要がありますが、現在申請できる場所は Meta AI 公式 Web サイトと HuggingFace の Meta モデル ページの 2 か所です。

どちらの方法を選択しても、申請後はしばらくお待ちいただくと承認メールが届きますので、ページを更新してモデルをダウンロードしてください。

モデルダウンロード許可承認通知メール

HuggingFace のモデルのダウンロード速度は Meta AI の公式 Web サイトよりも速いため、HuggingFace から必要なモデルを準備する方法に焦点を当てます。

HuggingFace からモデル ファイルを取得します。

HuggingFace から取得できる 2 つのモデル (オリジナルのベース モデルとチャット モデル) があり、HuggingFace プラットフォームでは、それらは PyTorch Pickle 形式と HuggingFace SafeTensors 形式の 2 つの形式で保存されます

LLaMA2モデル一覧

HuggingFace ファミリ バケットも使用する場合は、後者の形式を強くお勧めします。この形式は将来性があり、便利で信頼性が高く、読み込みパフォーマンスがより強力 (高速) です。

デモを容易にし、適切なエクスペリエンスを得るために、この記事ではモデルの「LLaMA2-Chat-HF」バージョンを使用します。次のアドレスでモデルのダウンロード許可を申請できます。

このうち、7B と 13B バージョンのモデルは、一般的な家庭用ビデオ カード (おそらく 10G ~ 14G のビデオ メモリを使用) で実行できます。

ダウンロードの承認が承認されたら、次のコマンドを使用して、ニーズに応じて次の 3 つのモデルをダウンロードできます。

# 本地需要按照 Git LFS,https://git-lfs.com
# 安装完毕,进行初始化
git lfs install

# 下载 7B 模型
git clone https://huggingface.co/meta-llama/Llama-2-7b-chat-hf

# 下载 13B 模型
git clone https://huggingface.co/meta-llama/Llama-2-13b-chat-hf

# 下载 70B 模型
git clone https://huggingface.co/meta-llama/Llama-2-70b-chat-hf

選択したモデルがダウンロードされるのを待った後、ディレクトリ構造を調整します。

# 创建一个新的目录,用于存放我们的模型
mkdir meta-llama

# 将下载好的模型移动到目录中
mv Llama-2-7b-chat-hf meta-llama/
mv Llama-2-13b-chat-hf meta-llama/
mv Llama-2-70b-chat-hf meta-llama/

完全なディレクトリ構造は次のようになります。すべてのモデルは、meta-llama作成したディレクトリの 1 レベル下にあります。

# tree -L 2 meta-llama
meta-llama
├── Llama-2-13b-chat-hf
│   ├── added_tokens.json
│   ├── config.json
│   ├── generation_config.json
│   ├── LICENSE.txt
│   ├── model-00001-of-00003.safetensors
│   ├── model-00002-of-00003.safetensors
│   ├── model-00003-of-00003.safetensors
│   ├── model.safetensors.index.json
│   ├── pytorch_model-00001-of-00003.bin
│   ├── pytorch_model-00002-of-00003.bin
│   ├── pytorch_model-00003-of-00003.bin
│   ├── pytorch_model.bin.index.json
│   ├── README.md
│   ├── Responsible-Use-Guide.pdf
│   ├── special_tokens_map.json
│   ├── tokenizer_config.json
│   ├── tokenizer.model
│   └── USE_POLICY.md
└── Llama-2-7b-chat-hf
    ├── added_tokens.json
    ├── config.json
    ├── generation_config.json
    ├── LICENSE.txt
    ├── model-00001-of-00002.safetensors
    ├── model-00002-of-00002.safetensors
    ├── model.safetensors.index.json
    ├── models--meta-llama--Llama-2-7b-chat-hf
    ├── pytorch_model-00001-of-00003.bin
    ├── pytorch_model-00002-of-00003.bin
    ├── pytorch_model-00003-of-00003.bin
    ├── pytorch_model.bin.index.json
    ├── README.md
    ├── special_tokens_map.json
    ├── tokenizer_config.json
    ├── tokenizer.json
    ├── tokenizer.model
    └── USE_POLICY.md

上記のコンテンツの準備ができたら、モデルを実行する準備を開始します。

モデルアプリケーションを起動する

次のコマンドを使用して、Docker LLaMA2 Chatモデル アプリケーション ファイルをダウンロードします。

git clone https://github.com/soulteary/docker-llama2-chat.git

プログラムがダウンロードされるのを待った後、プログラム ディレクトリに入り、必要なモデル コンテナ イメージの構築を開始します。

# 进入程序目录
cd docker-llama2-chat
# 构建 7B 镜像
bash scripts/make-7b.sh
# 或者,构建 13B 镜像
bash scripts/make-13b.sh

イメージが構築されるまで辛抱強く待った後、meta-llamaモデルを保存する事前に準備したディレクトリを現在のプログラム ディレクトリに移動し、開始するモデル プログラムを選択します。

# 运行 7B 镜像,应用程序
bash scripts/run-7b.sh
# 或者,运行 13B 镜像,应用程序
bash scripts/run-13b.sh

コマンドの実行後、すべてがうまくいけば、次のようなログが表示されます。

=============
== PyTorch ==
=============

NVIDIA Release 23.06 (build 63009835)
PyTorch Version 2.1.0a0+4136153

Container image Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved.

Copyright (c) 2014-2023 Facebook Inc.
Copyright (c) 2011-2014 Idiap Research Institute (Ronan Collobert)
Copyright (c) 2012-2014 Deepmind Technologies    (Koray Kavukcuoglu)
Copyright (c) 2011-2012 NEC Laboratories America (Koray Kavukcuoglu)
Copyright (c) 2011-2013 NYU                      (Clement Farabet)
Copyright (c) 2006-2010 NEC Laboratories America (Ronan Collobert, Leon Bottou, Iain Melvin, Jason Weston)
Copyright (c) 2006      Idiap Research Institute (Samy Bengio)
Copyright (c) 2001-2004 Idiap Research Institute (Ronan Collobert, Samy Bengio, Johnny Mariethoz)
Copyright (c) 2015      Google Inc.
Copyright (c) 2015      Yangqing Jia
Copyright (c) 2013-2016 The Caffe contributors
All rights reserved.

Various files include modifications (c) NVIDIA CORPORATION & AFFILIATES.  All rights reserved.

This container image and its contents are governed by the NVIDIA Deep Learning Container License.
By pulling and using the container, you accept the terms and conditions of this license:
https://developer.nvidia.com/ngc/nvidia-deep-learning-container-license

WARNING: CUDA Minor Version Compatibility mode ENABLED.
  Using driver version 525.105.17 which has support for CUDA 12.0.  This container
  was built with CUDA 12.1 and will be run in Minor Version Compatibility mode.
  CUDA Forward Compatibility is preferred over Minor Version Compatibility for use
  with this container but was unavailable:
  [[Forward compatibility was attempted on non supported HW (CUDA_ERROR_COMPAT_NOT_SUPPORTED_ON_DEVICE) cuInit()=804]]
  See https://docs.nvidia.com/deploy/cuda-compatibility/ for details.

Loading checkpoint shards: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 2/2 [00:05<00:00,  2.52s/it]
Caching examples at: '/app/gradio_cached_examples/20'
Caching example 1/5
/usr/local/lib/python3.10/dist-packages/transformers/generation/utils.py:1270: UserWarning: You have modified the pretrained model configuration to control generation. This is a deprecated strategy to control generation and will be removed soon, in a future version. Please use a generation configuration file (see https://huggingface.co/docs/transformers/main_classes/text_generation )
  warnings.warn(
Caching example 2/5
Caching example 3/5
Caching example 4/5
Caching example 5/5
Caching complete

/usr/local/lib/python3.10/dist-packages/gradio/utils.py:839: UserWarning: Expected 7 arguments for function <function generate at 0x7f3e096a1000>, received 6.
  warnings.warn(
/usr/local/lib/python3.10/dist-packages/gradio/utils.py:843: UserWarning: Expected at least 7 arguments for function <function generate at 0x7f3e096a1000>, received 6.
  warnings.warn(
Running on local URL:  http://0.0.0.0:7860

To create a public link, set `share=True` in `launch()`.

次に、ブラウザを使用してLLaMA2 チャット モデルを開くhttp://localhost:7860か、体験を開始します。http://你的IP:7860

公式サンプルを使用して実行されるモデル アプリケーション

メモリ使用量

7B モデルを実際に実行すると、約 13 G のビデオ メモリが消費されます。

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.105.17   Driver Version: 525.105.17   CUDA Version: 12.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  Off  | 00000000:01:00.0  On |                  Off |
| 31%   42C    P8    34W / 450W |  14158MiB / 24564MiB |      2%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      1414      G   /usr/lib/xorg/Xorg                103MiB |
|    0   N/A  N/A      1593      G   /usr/bin/gnome-shell               16MiB |
|    0   N/A  N/A      2772      C   python                          14034MiB |
+-----------------------------------------------------------------------------+

13B モデルは実行され、約 9G のビデオ メモリを消費します。

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.105.17   Driver Version: 525.105.17   CUDA Version: 12.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  Off  | 00000000:01:00.0 Off |                  Off |
| 31%   44C    P2    70W / 450W |   9057MiB / 24564MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      1414      G   /usr/lib/xorg/Xorg                167MiB |
|    0   N/A  N/A      1593      G   /usr/bin/gnome-shell               16MiB |
|    0   N/A  N/A      4686      C   python                           8870MiB |
+-----------------------------------------------------------------------------+

まあ、モデルの使い方を理解したいだけならこれで十分です。

モデル画像のカプセル化

次に、上記のスクリプトで行われた作業を簡単に展開してみましょう。

この LLaMA2 Docker イメージのカプセル化は、実際には非常に簡単です。これまでのモデル関連の記事と何ら変わりはありません。Nvidiaベース イメージに基づいて、単純な多段階ビルドを行うことができます。

たとえば、モデル プログラムの実行に必要なすべての依存ファイルを含む基本イメージを最初に定義できます。

ROM nvcr.io/nvidia/pytorch:23.06-py3
RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple && \
    pip install accelerate==0.21.0 bitsandbytes==0.40.2 gradio==3.37.0 protobuf==3.20.3 scipy==1.11.1 sentencepiece==0.1.99 transformers==4.31.0
WORKDIR /app

次に、上記のコンテンツを として保存しDockerfile.base、それを使用してdocker build -t soulteary/llama2:base . -f docker/Dockerfile.baseベース イメージを構築します。

次に、モデル呼び出しファイルを準備する必要があります。関連するプログラムをsoulteary/docker-llama2-chat/llama2-7bsoulteary/docker-llama2-chat/llama2-13bにアップロードしました。主なファイルは 2 つあり、Gradio Web インターフェイスとモデルの読み込みと実行プログラムです。

モデル アプリケーション イメージ ファイルを書き込みます。

FROM soulteary/llama2:base
COPY llama2-7b/* ./
CMD ["python", "app.py"]

上記のファイルを として保存した後Dockerfile.7b、コマンドを使用してdocker build -t soulteary/llama2:7b . -f docker/Dockerfile.7bアプリケーション イメージの構築を完了します。

最後に、次のコマンドを使用してプログラムを実行し、再生します。

docker run --gpus all --ipc=host --ulimit memlock=-1 --ulimit stack=67108864 --rm -it -v `pwd`/meta-llama:/app/meta-llama -p 7860:7860 soulteary/llama2:7b

やっと

この記事は LLaMA2 に関連する最初の記事ですが、オープンソース プロジェクトがわずか数か月でこれほど急速に進歩するのは非常に嬉しく、刺激的です。

LLaMA2 は終わりではなく、新しいラウンドの始まりです。オープンソースの世界では、常に進歩し、現在の世界の王に挑戦する、より強力な人物が出現することが常に期待できます。

この記事のタイトルには次の記事へのヒントが隠されていますが、わかりますか?

–EOF


この記事は「Signature 4.0 International (CC BY 4.0)」ライセンス契約を使用していますので、転載・再利用は自由ですが、出典を明記する必要があります。表示 4.0 インターナショナル (CC BY 4.0)

この記事の著者: スー・ヤン

作成時期: 2023 年 7 月 21 日
ワード数: 10092 ワード
読了時間: 21 分で読める
この記事のリンク: https://soulteary.com/2023/07/21/use-docker-to-quickly-get-started-with-the-official-version-of-llama2-open-source-large-model.html

おすすめ

転載: blog.csdn.net/soulteary/article/details/131843161