このトピックでは、Alibaba Cloud AI Containers (AC2) が提供する人工知能 (AI) コンテナイメージを使用して、AMDプロセッサを使用してチャットボットを作成するElastic Compute Service (ECS) インスタンスにChatGLM3-6Bモデルをデプロイする方法について説明します。
背景情報
ChatGLM3は、ChatGLMシリーズの最新世代のオープンソースモデルです。 ChatGLM3-6Bは、スムーズなダイアログ機能や簡単な展開などの機能を前任者から継承し、より強力なベースモデル、より広範な機能、より幅広いオープンソースシリーズを導入しています。 詳細については、ChatGLM3-6Bを参照してください。
手順 1: ECS インスタンスの作成
Elastic Compute Service (ECS) コンソールのインスタンス購入ページに移動します。
ECSインスタンスの作成のプロンプトに従ってパラメーターを設定します。
次のパラメータに注意してください。 ECSインスタンス購入ページで他のパラメーターを設定する方法については、「カスタム起動タブでインスタンスを作成する」をご参照ください。
インスタンス: ChatGLM3-6Bモデルには約30 GiBのメモリが必要です。 モデルが安定して実行されるようにするには、ecs.g8a.4xlargeまたは64 GiB以上のメモリを持つ別のインスタンスタイプを選択します。
イメージ: Alibaba Cloud Linux 3.2104 LTS 64ビットイメージを選択します。
パブリックIPアドレス: モデルのダウンロードプロセスを高速化するには、[パブリックIPv4アドレスの割り当て] を選択し、帯域幅課金方法を [トラフィック課金] に設定し、最大帯域幅を100 Mbit/sに設定します。
データディスク: ChatGLM3-6B用の複数のモデルファイルをダウンロードする必要があり、大量のストレージスペースを占有します。 モデルが期待どおりに実行されるようにするには、100 GiBデータディスクを追加することを推奨します。
手順2: Dockerランタイム環境の作成
Dockerをインストールします。
Alibaba Cloud Linux 3を実行するECSインスタンスにDockerをインストールする方法については、「LinuxインスタンスにDockerをインストールして使用する」をご参照ください。
次のコマンドを実行して、Dockerデーモンが起動していることを確認します。
sudo systemctl status docker
次のコマンドを実行して、PyTorch AIコンテナを作成して実行します。
AC2は、AMDハードウェアおよびソフトウェア用に最適化されたPyTorchイメージを含む、AIシナリオ用のさまざまなコンテナイメージを提供し、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 Large File Storage (LFS) を有効にします。
事前トレーニング済みモデルをダウンロードするには、Git LFSを有効にする必要があります。
git lfs install
ソースコードとモデルをダウンロードします。
次のコマンドを実行して、tmuxセッションを作成します。
tmux
説明事前にトレーニングされたモデルをダウンロードするには長い時間が必要であり、ダウンロードの成功率はネットワーク条件によって異なります。 ECSインスタンスへの接続とモデルダウンロードプロセスの継続性を維持するために、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
ダウンロードプロセスが完了すると、次の図に示すように現在のディレクトリが表示されます。
次のコマンドを実行して、ランタイム環境をデプロイします。
多数のPython AI依存関係がAC2に統合されています。
Yellowdog Updater Modified (YUM)
またはDandified YUM (DNF)
を使用して、Pythonランタイム依存関係をインストールできます。yum install -y python3-{transformers,sentencepiece,protobuf,accelerate}
チャットボットとチャットします。
次のコマンドを実行して、モデルのロードパラメーターを変更します。
サンプルのターミナルスクリプトがプロジェクトのソースコードで提供されています。これにより、ChatGLM3-6Bモデルを実行してオンプレミスのチャットボットとチャットできます。 スクリプトを実行する前に、モデルの読み込みパラメーターを変更して、BFloat16の精度でモデルを読み込み、CPU用のAVX-512命令セットを使用して読み込みプロセスを高速化します。
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モデルとリアルタイムでチャットできます。説明stop
コマンドを実行してチャットボットを終了できます。