LLM 배치

LLM을 배포하려면 먼저 OCI에서 BM.GPU.MI300X.8 인스턴스를 생성해야 합니다.

그런 다음 OCI Block Volumes 서비스를 사용하여 데이터, 객체 및 비정형 모델 데이터를 저장할 수 있습니다. 지침에 따라 각 작업을 완료합니다.

  1. 인스턴스 생성
  2. 블록 부피 생성
  3. 인스턴스에 블록 볼륨 연결
  4. 블록 볼륨에 연결
  5. OCI Object Storage 버킷 생성

그러면 OCI Object Storage에서 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

콘솔 옵션을 사용하려면 다음 단계를 수행하십시오.

  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. ROCm에서 vLLM 기능을 사용하려면 다음 명령을 사용하여 Docker 이미지를 복제하고 컨테이너를 빌드합니다.
    git clone https://github.com/vllm-project/vllm.git
    cd vllm
    DOCKER_BUILDKIT=1
    docker build -f Dockerfile.rocm -t vllm-rocm .
  2. 컨테이너를 생성한 후 다음 명령을 사용하여 다운로드한 OCI Object Storage 버킷을 가리키도록 <path/to/model>를 바꾸고 Hugging Face 모델을 실행하여 컨테이너를 테스트할 수 있습니다.
    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 제공

프롬프트 일괄 처리로 오프라인 추론을 수행할 수 있도록 llmSamplingParams 클래스를 임포트합니다. 그런 다음 모델을 로드하고 호출할 수 있습니다.

다음은 텐서 병렬화로 실행하기 위해 여러 GPU가 필요한 Meta Llama 3 70B 모델의 예입니다. 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
                    }'