Alibaba Cloud AI Containers (AC2) イメージを使用して、AMD ベースの ECS インスタンス上に ChatGLM3-6B 言語モデルをデプロイします。本記事ではチャットボットを実例として説明します。
背景情報
ChatGLM3 は、ChatGLM シリーズの最新世代のオープンソースモデルです。ChatGLM3-6B は、以前のバージョンのスムーズな会話フローと低いデプロイ要件を維持しながら、より強力な基盤モデル、より広範な機能サポート、より包括的なオープンソースシリーズを追加しています (ChatGLM3-6B オープンソースリポジトリ)。
ステップ 1: ECS インスタンスの作成
-
インスタンス作成ページに移動します。
-
以下の主要なパラメーターを使用してインスタンスを設定します。
その他のすべてのパラメーターについては、「カスタムインスタンスの作成」をご参照ください。
-
[インスタンスタイプ]:ChatGLM3-6B には約 30 GiB のメモリが必要です。安定した動作のために、少なくとも ecs.g8a.4xlarge (64 GiB) を選択してください。
-
[イメージ]:Alibaba Cloud Linux 3.2104 LTS 64 ビット。
-
[パブリック IP]:[Assign Public IPv4 Address] を選択してください。課金方法を [Pay-By-Traffic] に設定し、ピーク帯域幅を [100] Mbps に設定することで、モデルのダウンロードが高速になります。
-
[データディスク]:モデルファイルには大容量のストレージが必要です。データディスクのサイズを 100 GiB に設定してください。
-
ステップ 2: Docker ランタイム環境の作成
-
Docker をインストールします。
「DockerおよびDocker Composeのインストールと使用」の説明に従って、Alibaba Cloud Linux 3 に Docker をインストールしてください。
-
Docker デーモンが実行されていることを確認してください。
sudo systemctl status docker -
AC2 から AMD 最適化 PyTorch コンテナを作成して実行してください。
AC2 は、AMD CPU 向けに最適化された PyTorch イメージを提供し、ランタイム環境を迅速にセットアップできます。
sudo docker pull ac2-registry.cn-hangzhou.cr.aliyuncs.com/ac2/pytorch-amd:1.13.1-3.2304-zendnn4.1 sudo docker run -itd --name pytorch-amd --net host -v $HOME/workspace:/workspace \ ac2-registry.cn-hangzhou.cr.aliyuncs.com/ac2/pytorch-amd:1.13.1-3.2304-zendnn4.1
ステップ 3: ChatGLM3-6B の手動デプロイ
-
コンテナ環境に入ってください。
sudo docker exec -it -w /workspace pytorch-amd /bin/bash以降のすべてのコマンドはコンテナ内で実行されます。コンテナを終了した場合は、前述のコマンドを再実行して再度入ってください。コンテナ内にいることを確認するには、
cat /proc/1/cgroup | grep dockerを実行してください。出力があれば、コンテナ環境であることが確認できます。 -
必要なツールをインストールしてください。
yum install -y tmux git git-lfs wget -
Git LFS を有効にしてください。
事前学習済みモデルをダウンロードするには、Git LFS が必要です。
git lfs install -
ソースコードとモデルをダウンロードしてください。
-
tmux セッションを開始してください。
tmux説明モデルのダウンロードには時間がかかり、ネットワークに依存します。SSH 接続が切断された場合に中断を防ぐため、tmux を使用してください。
-
ChatGLM3-6B のソースコードと事前学習済みモデルをダウンロードしてください。
git clone https://github.com/THUDM/ChatGLM3.git git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b.git --depth=1 -
ダウンロードを確認してください。
ls -lダウンロード後、ディレクトリには以下が含まれます。
[root@iZ2zexxxxxxxxxxxx workspace]# ls -l total 8 drwxr-xr-x 12 root root 4096 Feb 6 09:35 ChatGLM3 drwxr-xr-x 3 root root 4096 Feb 6 09:57 chatglm3-6b
-
-
Python ランタイムの依存関係をインストールしてください。
AC2 コンテナには、多数の Python AI コンポーネントがバンドルされています。
yumまたはdnfを使用して、残りの依存関係をインストールしてください。yum install -y python3-{transformers,sentencepiece,protobuf,accelerate} -
チャットボットの会話を実行してください。
-
モデルの読み込みパラメーターを変更してください。
ソースコードには、ターミナル用のチャットボットスクリプトが含まれています。実行する前に、CPU の AVX-512 命令セットを使用して高速化するために、BF16 精度でモデルを読み込むように設定してください。
cd /workspace/ChatGLM3/basic_demo grep "import torch" cli_demo.py 2>&1 >/dev/null || sed -i "3i\import torch" cli_demo.py sed -i 's/"auto")/"auto", torch_dtype=torch.bfloat16)/g' cli_demo.py -
チャットボットを起動してください。
export MODEL_PATH="/workspace/chatglm3-6b" python3 cli_demo.py起動後、
User:プロンプトでテキストを入力して、ChatGLM3-6B とリアルタイムでチャットできます。[root@iz2ze*** basic_demo]# python3 cli_demo.py Loading checkpoint shards: 100%|xxx| Welcome to the ChatGLM3-6B model. Enter your input to start a conversation, enter clear to clear the conversation history, or enter stop to exit the program. User: Who are you? What can you do? ChatGLM: Hello, I am an AI assistant. I can answer your questions and help you solve problems. My capabilities include but are not limited to: 1. Answering questions: I can answer questions on history, science, mathematics, literature, and other topics. 2. Offering practical advice: Whether it is a small everyday issue or a difficult problem at work or in your studies, I will do my best to help. 3. Entertainment and leisure: I can chat with you, tell jokes, and share interesting topics to help you relax. Note that although I try to provide accurate information and suggestions, my knowledge and capabilities are still limited. Exercise caution when you make important decisions. If you need anything, ask me at any time and I will be happy to help. User:説明チャットボットを終了するには、
stopと入力してください。
-