LLMのデプロイ

LLMをデプロイするには、まずOCIでBM.GPU.MI300X.8インスタンスを作成する必要があります。

その後、OCI Block Volumesサービスを使用して、データ、オブジェクトおよび非構造化モデル・データを格納できます。指示に従って各タスクを完了します。

  1. インスタンスの作成
  2. ブロック・ボリュームを作成します
  3. インスタンスへのブロック・ボリュームのアタッチ
  4. ブロック・ボリュームへの接続
  5. OCIオブジェクト・ストレージ・バケットの作成

これにより、OCIオブジェクト・ストレージからOCIで実行されているOKEクラスタにモデルがデプロイされます。

OKEクラスタの作成

OKEクラスタを作成するか、コンソールを使用して、管理対象ノードを含むOKEクラスタを構成および作成します。

OKEクラスタを作成するには、次のコマンドを使用します:

oci ce cluster create --compartment-id ocid1.compartment.oc1..aaaaaaaay______t6q
      --kubernetes-version v1.24.1 --name amd-mi300x-ai-cluster --vcn-id
      ocid1.vcn.oc1.iad.aaaaaae___yja

consoleオプションを使用するには、次のステップに従います。

  1. コンソール・オプションには、このコマンドを使用します。次のコマンドを使用して、クラスタの作成後に管理対象nodepoolを作成できます。
    oci ce node-pool create --cluster-id <cluster-ocid> --compartment-id <compartment-ocid> --name <node-pool-name> --node-shape <shape>
  2. クラスタを設定し、クラスタへの必要なアクセスを行ったら、次の手順(Oracle Linuxの例)を使用してROCmをインストールします。
    sudo dnf install https://repo.radeon.com/amdgpu-install/6.4/el/9.5/amdgpu-install-6.4.60400-1.el9.noarch.rpm
    sudo dnf clean all
    wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
    sudo rpm -ivh epel-release-latest-9.noarch.rpm
    sudo dnf install dnf-plugin-config-manager
    sudo crb enable
    sudo dnf install python3-setuptools python3-wheel
    sudo usermod -a -G render,video $LOGNAME
  3. 現在のユーザーをレンダーとビデオに追加します。
    groupssudo dnf install rocm
  4. 次のコマンドを使用して、AMD GPUドライバをインストールします。
    sudo dnf install https://repo.radeon.com/amdgpu-install/6.4/el/9.5/amdgpu-install-6.4.60400-1.el9.noarch.rpm
    sudo dnf clean all
    sudo dnf install "kernel-uek-devel-$(uname -r)"
    sudo dnf install amdgpu-dkms

ROCmでのvLLM機能の使用

ROCmのvLLM機能を使用するには、次のステップに従います。
  1. ROCmvLLM機能を使用するには、Dockerイメージをクローニングし、次のコマンドを使用してコンテナを構築します:
    git clone https://github.com/vllm-project/vllm.git
    cd vllm
    DOCKER_BUILDKIT=1
    docker build -f Dockerfile.rocm -t vllm-rocm .
  2. コンテナを作成した後、Hugging Faceモデルを実行し、次のコマンドを使用してダウンロードしたOCIオブジェクト・ストレージ・バケットを指すように<path/to/model>を置き換えることで、コンテナをテストできます:
    docker run -it --network=host --group-add=video --ipc=host --cap-
    add=SYS_PTRACE --security-opt seccomp=unconfined --device /dev/kfd --device /dev/dri -v <path/to/model>:/app/models vllm-rocm

LLMの提供

プロンプトのバッチを使用して、オフライン推論用にllmおよびSamplingParamsクラスをインポートします。その後、モデルをロードしてコールできます。

次に、Meta Llama 3 70Bモデルの例を示します。このモデルでは、複数のGPUをテンソル並列で実行する必要があります。vLLMは、Megatron-LMのテンソル並列化アルゴリズムとPythonのマルチプロセッシングを使用して、単一ノードで分散ランタイムを管理します。

  1. 次のコマンドを使用して、LLMモデル推論を処理します。
    vllm serve --model="meta-llama/Meta-Llama-3-70B-Instruct" --tensor-parallel-size 4--distributed-executor-backend=m
  2. 次のコマンドを使用して、モデルを処理します。
    vllm serve meta-llama/Meta-Llama-3-70B-Instruct
  3. モデルを問い合せるには、次のcurlコマンドを使用します。
    curl http://localhost:8000/v1/completions \
                -H "Content-Type: application/json" \
                -d '{
                    "model": "Qwen/Qwen2-7B-Instruct",
                    "prompt": "Write a haiku about artificial intelligence",
                    "max_tokens": 128,
                    "top_p": 0.95,
                    "top_k": 20,
                    "temperature": 0.8
                    }'