Amazon EC2에서 추론 워크로드를 위한 EFA 및 NIXL 시작하기
NVIDIA Inference Xfer Library(NIXL)는 분해된 추론 워크로드를 위해 특별히 설계된 처리량이 높고 지연 시간이 짧은 통신 라이브러리입니다. NIXL을 EFA 및 Libfabric과 함께 사용하여 프리필 노드와 디코딩 노드 간의 KV 캐시 전송을 지원할 수 있으며 다양한 스토리지 계층 간의 효율적인 KV 캐시 이동을 지원합니다. 자세한 내용은 NIXL
요구 사항
-
Ubuntu 24.04 및 Ubuntu 22.04 기반 AMI만 지원됩니다.
-
EFA는 NIXL 1.0.0 이상만 지원합니다.
단계
EFA에는 보안 그룹 자체 내의 모든 인바운드 및 아웃바운드 트래픽을 허용하는 보안 그룹이 필요합니다. 다음 절차에서는 자체적으로 들어오고 나가는 모든 인바운드 및 아웃바운드 트래픽을 허용하고 SSH 연결을 위해 모든 IPv4 주소의 인바운드 SSH 트래픽을 허용하는 보안 그룹을 생성합니다.
중요
이 보안 그룹은 테스트 목적으로만 사용됩니다. 프로덕션 환경에서는 컴퓨터의 IP 주소 또는 로컬 네트워크의 IP 주소 범위와 같이 연결하려는 IP 주소로부터의 트래픽만 허용하는 인바운드 SSH 규칙을 생성하는 것이 좋습니다.
다른 시나리오는 다양한 사용 사례에 대한 보안 그룹 규칙 섹션을 참조하세요.
EFA 사용 보안 그룹을 생성하려면
https://console.aws.amazon.com/ec2/
에서 Amazon EC2 콘솔을 엽니다. -
탐색 창에서 보안 그룹(Security Groups)을 선택한 다음, 보안 그룹 생성(Create security group)을 선택합니다.
-
보안 그룹 생성(Create security group) 창에서 다음을 수행합니다.
-
보안 그룹 이름의 경우
EFA-enabled security group과 같은 보안 그룹의 고유한 이름을 입력합니다. -
(선택 사항) 설명에 보안 그룹에 대한 간략한 설명을 입력합니다.
-
VPC에서는 EFA 사용 인스턴스를 시작하려는 VPC를 선택합니다.
-
보안 그룹 생성을 선택합니다.
-
-
생성한 보안 그룹을 선택하고 세부 정보(Details) 탭에서 보안 그룹 ID(Security group ID)를 복사합니다.
-
보안 그룹을 선택한 상태에서 작업(Actions), 인바운드 규칙 편집(Edit inbound rules)을 선택한 후 다음을 수행합니다.
-
[Add another rule]을 선택합니다.
-
유형(Type)에서 모든 트래픽(All traffic)을 선택합니다.
-
소스 유형(Source type)에서 사용자 지정(Custom)을 선택하고 복사한 보안 그룹 ID를 필드에 붙여넣습니다.
-
규칙 추가를 선택합니다.
-
Type(유형)에서 SSH를 선택합니다.
-
소스 유형(Source type)에서 어디서나 - IPv4(Anywhere - IPv4)를 선택합니다.
-
규칙 저장을 선택합니다.
-
-
보안 그룹을 선택한 상태에서 작업(Actions), 아웃바운드 규칙 편집(Edit outbound rules)을 선택한 후 다음을 수행합니다.
-
[Add another rule]을 선택합니다.
-
유형(Type)에서 모든 트래픽(All traffic)을 선택합니다.
-
대상 유형(Destination type)에서 사용자 지정(Custom)을 선택하고 복사한 보안 그룹 ID를 필드에 붙여넣습니다.
-
규칙 저장을 선택합니다.
-
EFA 소프트웨어 구성 요소를 설치하고 구성하는 데 사용할 수 있는 임시 인스턴스를 실행합니다. 이 인스턴스를 사용해 EFA를 사용한 AMI을 생성하여 EFA를 사용한 인스턴스를 실행할 수 있습니다.
임시 인스턴스를 실행합니다.
https://console.aws.amazon.com/ec2/
에서 Amazon EC2 콘솔을 엽니다. -
탐색 창에서 Instances(인스턴스)를 선택한 다음에 Launch Instances(인스턴스 시작)를 선택하여 새 인스턴스 시작 마법사를 엽니다.
-
(선택 사항)이름 및 태그(Name and tags) 섹션에서 인스턴스의 이름(예:
EFA-instance)을 제공합니다. 이름은 인스턴스에 리소스 태그(Name=)로 할당됩니다.EFA-instance -
애플리케이션 및 OS 이미지 섹션에서 지원되는 운영 체제 중 하나에 해당하는 AMI를 선택합니다. DLAMI 릴리스 정보 페이지에서 지원되는 DLAMI를 선택할 수도 있습니다.
-
인스턴스 유형 섹션에서 지원되는 인스턴스 유형을 선택합니다.
-
키 페어(Key pair) 섹션에서 인스턴스에 사용할 키 페어를 선택합니다.
-
네트워크 설정(Network settings) 섹션에서 편집(Edit)을 선택하고 다음과 같이 수행합니다.
-
서브넷(Subnet)에서 인스턴스를 시작할 서브넷을 선택합니다. 서브넷을 선택하지 않으면 EFA에 대해 인스턴스를 활성화할 수 없습니다.
-
방화벽(보안 그룹)의 경우 기존 보안 그룹 선택(Select existing security group)을 선택한 다음에 이전 단계에서 생성한 보안 그룹을 선택합니다.
-
고급 네트워크 구성 섹션을 확장합니다.
네트워크 인터페이스 1에서 네트워크 카드 인덱스 = 0, 디바이스 인덱스 = 0 및 인터페이스 유형 = ENA 포함 EFA를 선택합니다.
(선택 사항)
p4d.24xlarge또는p5.48xlarge와 같은 다중 카드 인스턴스 유형을 사용하는 경우, 필요한 추가 네트워크 인터페이스마다 네트워크 인터페이스 추가를 선택하고 네트워크 카드 인덱스에서 다음 미사용 인덱스를 선택한 다음, 디바이스 인덱스 = 1 및 인터페이스 유형 = ENA 포함 EFA 또는 EFA 전용을 선택합니다.
-
-
스토리지(Storage) 섹션에서 필요에 따라 볼륨을 구성합니다.
참고
Nvidia CUDA 도구 키트에 사용할 10~20GiB의 스토리지를 추가로 프로비저닝해야 합니다. 스토리지를 충분히 프로비저닝하지 않으면 Nvidia 드라이버 및 CUDA 도구 키트를 설치하려고 할 때
insufficient disk space오류가 발생합니다. -
오른쪽의 요약(Summary) 패널에서 인스턴스 시작(Launch instance)을 선택합니다.
중요
AMI에 이미 Nvidia GPU 드라이버, CUDA 툴킷 및 cuDNN이 포함되어 있거나 비 GPU 인스턴스를 사용하는 경우 3단계를 건너뜁니다.
Nvidia GPU 드라이버 및 Nvidia CUDA 툴킷 및 cuDNN을 설치하려면
-
모든 소프트웨어 패키지가 최신 상태로 업데이트되어 있는지 확인하기 위해, 인스턴스에서 퀵 소프트웨어 업데이트를 실행합니다.
$sudo apt-get update && sudo apt-get upgrade -y -
Nvidia GPU 드라이버 및 Nvidia CUDA 도구 키트를 설치하는 데 필요한 유틸리티를 설치합니다.
$sudo apt-get install build-essential -y -
Nvidia GPU 드라이버를 사용하려면, 우선
nouveau오픈 소스 드라이버를 비활성화해야 합니다.-
현재 실행 중인 커널의 버전에 필요한 유틸리티와 커널 헤더 패키지를 설치합니다.
$sudo apt-get install -y gcc make linux-headers-$(uname -r) -
nouveau를/etc/modprobe.d/blacklist.conf거부 목록 파일에 추가합니다.$cat << EOF | sudo tee --append /etc/modprobe.d/blacklist.conf blacklist vga16fb blacklist nouveau blacklist rivafb blacklist nvidiafb blacklist rivatv EOF -
원하는 텍스트 편집기를 사용하여
/etc/default/grub를 열고 다음을 추가합니다.GRUB_CMDLINE_LINUX="rdblacklist=nouveau" -
Grub 구성을 다시 빌드합니다.
$sudo update-grub
-
-
인스턴스를 재부팅하고 다시 연결합니다.
-
CUDA 리포지토리를 추가하고 Nvidia GPU 드라이버, NVIDIA CUDA 도구 키트 및 cuDNN을 설치합니다.
$sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu2004/x86_64/7fa2af80.pub \ && wget -O /tmp/deeplearning.deb http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu2004/x86_64/nvidia-machine-learning-repo-ubuntu2004_1.0.0-1_amd64.deb \ && sudo dpkg -i /tmp/deeplearning.deb \ && wget -O /tmp/cuda.pin https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin \ && sudo mv /tmp/cuda.pin /etc/apt/preferences.d/cuda-repository-pin-600 \ && sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/3bf863cc.pub \ && sudo add-apt-repository 'deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /' \ && sudo apt update \ && sudo apt install nvidia-dkms-535 \ && sudo apt install -o Dpkg::Options::='--force-overwrite' cuda-drivers-535 cuda-toolkit-12-3 libcudnn8 libcudnn8-dev -y -
인스턴스를 재부팅하고 다시 연결합니다.
-
(
p4d.24xlarge및p5.48xlarge만 해당) Nvidia Fabric Manager를 설치합니다.-
이전 단계에서 설치한 Nvidia 커널 모듈의 버전과 일치하는 Nvidia Fabric Manager 버전을 설치해야 합니다.
다음 명령을 실행하여 Nvidia 커널 모듈의 버전을 확인합니다.
$cat /proc/driver/nvidia/version | grep "Kernel Module"다음은 예제 출력입니다.
NVRM version: NVIDIA UNIX x86_64 Kernel Module 450.42.01 Tue Jun 15 21:26:37 UTC 2021위 예제에서 커널 모듈의 메이저 버전
450이 설치되었습니다. 즉, Nvidia Fabric Manager 버전450을 설치해야 합니다. -
Nvidia Fabric Manager를 설치합니다. 다음 명령을 실행하고 이전 단계에서 식별된 메이저 버전을 지정합니다.
$sudo apt install -o Dpkg::Options::='--force-overwrite' nvidia-fabricmanager-major_version_number예를 들어, 커널 모듈의 메이저 버전
450이 설치된 경우 다음 명령을 사용하여 일치하는 버전의 Nvidia Fabric Manager를 설치합니다.$sudo apt install -o Dpkg::Options::='--force-overwrite' nvidia-fabricmanager-450 -
서비스를 시작하고 인스턴스가 시작될 때 서비스가 자동으로 시작되는지 확인합니다. Nvidia 패브릭 관리자는 NV 스위치 관리에 필요합니다.
$sudo systemctl start nvidia-fabricmanager && sudo systemctl enable nvidia-fabricmanager
-
-
인스턴스가 시작될 때마다 CUDA 경로가 설정되는지 확인합니다.
-
bash 셸의 경우
/home/및username/.bashrc/home/에 다음 명령문을 추가합니다.username/.bash_profileexport PATH=/usr/local/cuda/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH -
tcsh 셸의 경우
/home/에 다음 명령문을 추가합니다.username/.cshrcsetenv PATH=/usr/local/cuda/bin:$PATH setenv LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH
-
-
Nvidia GPU 드라이버가 작동하는지 확인하려면 다음 명령을 실행합니다.
$nvidia-smi -q | head명령을 실행하면 Nvidia GPU, Nvidia GPU 드라이버 및 Nvidia CUDA 도구 키트에 대한 정보가 반환되어야 합니다.
중요
AMI에 이미 GDRCopy가 포함되어 있거나 비 GPU 인스턴스를 사용하는 경우 4단계를 건너뜁니다.
GPU 기반 플랫폼에서 Libfabric의 성능을 향상하려면 GDRCopy를 설치하세요. GDRCopy에 관한 자세한 내용은 GDRCopy 리포지토리
GDRCopy 설치 방법
-
필요한 종속 항목을 설치합니다.
$sudo apt -y install build-essential devscripts debhelper check libsubunit-dev fakeroot pkg-config dkms -
GDRCopy 패키지를 다운로드하여 압축을 풉니다.
$wget https://github.com/NVIDIA/gdrcopy/archive/refs/tags/v2.4.tar.gz \ && tar xf v2.4.tar.gz \ && cd gdrcopy-2.4/packages -
GDRCopy DEB 패키지를 빌드합니다.
$CUDA=/usr/local/cuda ./build-deb-packages.sh -
GDRCopy DEB 패키지를 설치합니다.
$sudo dpkg -i gdrdrv-dkms_2.4-1_amd64.*.deb \ && sudo dpkg -i libgdrapi_2.4-1_amd64.*.deb \ && sudo dpkg -i gdrcopy-tests_2.4-1_amd64.*.deb \ && sudo dpkg -i gdrcopy_2.4-1_amd64.*.deb
중요
AMI에 이미 최신 EFA 설치 관리자가 포함되어 있는 경우 5단계를 건너뜁니다.
인스턴스에서 EFA를 지원하는 데 필요한 EFA 지원 커널, EFA 드라이버 및 Libfabric 스택을 설치합니다.
EFA 소프트웨어를 설치하려면
-
시작한 인스턴스에 연결합니다. 자세한 내용은 SSH를 사용하여 Linux 인스턴스에 연결 섹션을 참조하세요.
-
EFA 소프트웨어 설치 파일을 다운로드합니다. 소프트웨어 설치 파일은 압축 tarball(
.tar.gz) 파일로 패키징되어 있습니다. 최신 안정 버전을 다운로드하려면 다음 명령을 사용하십시오.$curl -O https://efa-installer.amazonaws.com/aws-efa-installer-1.47.0.tar.gz -
압축
.tar.gz파일에서 파일을 추출하고, tarball을 삭제한 다음, 추출된 디렉터리로 이동합니다.$tar -xf aws-efa-installer-1.47.0.tar.gz && rm -rf aws-efa-installer-1.47.0.tar.gz && cd aws-efa-installer -
EFA 소프트웨어 설치 스크립트를 실행합니다.
$sudo ./efa_installer.sh -yLibfabric은
/opt/amazon/efa디렉터리에 설치됩니다. -
EFA 설치 프로그램에서 인스턴스를 재부팅하라는 메시지를 표시하면 인스턴스를 재부팅한 다음 인스턴스에 다시 연결합니다. 그렇게 하지 않으면 인스턴스에서 로그아웃한 다음 다시 로그인하여 설치를 완료합니다.
-
EFA 소프트웨어 구성 요소가 성공적으로 설치되었는지 확인합니다.
$fi_info -p efa -t FI_EP_RDM이 명령은 Libfabric EFA 인스턴스에 대한 정보를 반환합니다. 다음은 해당 명령 출력을 보여주는 예제입니다.
-
p3dn.24xlarge및 단일 네트워크 인터페이스provider: efa fabric: EFA-fe80::94:3dff:fe89:1b70 domain: efa_0-rdm version: 2.0 type: FI_EP_RDM protocol: FI_PROTO_EFA -
p4d.24xlarge및p5.48xlarge와 여러 네트워크 인터페이스provider: efa fabric: EFA-fe80::c6e:8fff:fef6:e7ff domain: efa_0-rdm version: 111.0 type: FI_EP_RDM protocol: FI_PROTO_EFA provider: efa fabric: EFA-fe80::c34:3eff:feb2:3c35 domain: efa_1-rdm version: 111.0 type: FI_EP_RDM protocol: FI_PROTO_EFA provider: efa fabric: EFA-fe80::c0f:7bff:fe68:a775 domain: efa_2-rdm version: 111.0 type: FI_EP_RDM protocol: FI_PROTO_EFA provider: efa fabric: EFA-fe80::ca7:b0ff:fea6:5e99 domain: efa_3-rdm version: 111.0 type: FI_EP_RDM protocol: FI_PROTO_EFA
-
NIXL을 설치합니다. NIXL에 대한 자세한 내용은 NIXL 리포지토리
NIXL 벤치마크를 설치하고 테스트를 실행하여 임시 인스턴스가 EFA 및 NIXL에 맞게 올바르게 구성되었는지 확인합니다. NIXL 벤치마크를 사용하면 NIXL이 제대로 설치되었고 예상대로 작동하는지 확인할 수 있습니다. 자세한 내용은 nixlbench 리포지토리
NIXL 벤치마크(nixlbench)는 클라이언트와 서버 간의 조정을 위해 ETCD가 필요합니다. NIXL에서 ETCD를 사용하려면 ETCD 서버 및 클라이언트와 ETCD CPP API가 필요합니다.
기계 학습 애플리케이션을 임시 인스턴스에 설치합니다. 설치 절차는 기계 학습 애플리케이션에 따라 다릅니다.
참고
설치 지침은 기계 학습 애플리케이션의 설명서를 참조하세요.
필수 소프트웨어 구성 요소를 설치한 뒤 AMI를 사용하여 EFA 사용 인스턴스를 재사용하고 시작합니다.
임시 인스턴스에서 AMI를 생성하려면
https://console.aws.amazon.com/ec2/
에서 Amazon EC2 콘솔을 엽니다. -
탐색 창에서 인스턴스를 선택합니다.
-
생성한 임시 인스턴스를 선택하고 [작업(Actions)], [이미지(Image)], [이미지 생성(Create image)]을 선택합니다.
-
[이미지 생성(Create image)]에서 다음을 수행합니다.
-
[이미지 이름(Image name)]에 AMI를 설명하는 이름을 입력합니다.
-
(선택 사항) [이미지 설명(Image description)]에 AMI의 용도에 대한 간략한 설명을 입력합니다.
-
이미지 생성(Create image)을 선택합니다.
-
-
탐색 창에서 AMI를 선택합니다.
-
목록에서 생성한 AMI를 찾습니다. 상태가
pending에서available로 바뀔 때까지 기다린 후 다음 단계를 계속합니다.
이 단계에서는 시작한 임시 인스턴스가 더 이상 필요하지 않습니다. 추가 요금이 발생하지 않도록 해당 인스턴스를 종료할 수 있습니다.
임시 인스턴스 종료
https://console.aws.amazon.com/ec2/
에서 Amazon EC2 콘솔을 엽니다. -
탐색 창에서 인스턴스를 선택합니다.
-
생성한 임시 인스턴스를 선택하고 작업(Actions), 인스턴스 상태(Instance state), 인스턴스 종료(Terminate instance)를 선택합니다.
-
확인 메시지가 나타나면 종료(Terminate)를 선택합니다.
9단계에서 생성한 EFA 지원 AMI와 1단계에서 생성한 EFA 지원 보안 그룹을 사용하여 EFA 및 NIXL 지원 인스턴스를 시작합니다.
EFA 및 NIXL 지원 인스턴스를 시작하려면
https://console.aws.amazon.com/ec2/
에서 Amazon EC2 콘솔을 엽니다. -
탐색 창에서 Instances(인스턴스)를 선택한 다음에 Launch Instances(인스턴스 시작)를 선택하여 새 인스턴스 시작 마법사를 엽니다.
-
(선택 사항)이름 및 태그(Name and tags) 섹션에서 인스턴스의 이름(예:
EFA-instance)을 제공합니다. 이름은 인스턴스에 리소스 태그(Name=)로 할당됩니다.EFA-instance -
애플리케이션 및 OS 이미지(Application and OS Images) 섹션에서 내 AMI(My AMIs)를 선택한 다음에 이전 단계에서 생성한 AMI를 선택합니다.
-
인스턴스 유형 섹션에서 지원되는 인스턴스 유형을 선택합니다.
-
키 페어(Key pair) 섹션에서 인스턴스에 사용할 키 페어를 선택합니다.
-
네트워크 설정(Network settings) 섹션에서 편집(Edit)을 선택하고 다음과 같이 수행합니다.
-
서브넷(Subnet)에서 인스턴스를 시작할 서브넷을 선택합니다. 서브넷을 선택하지 않으면 EFA에 대해 인스턴스를 활성화할 수 없습니다.
-
방화벽(보안 그룹)의 경우, 기존 보안 그룹 선택을 선택한 다음 1단계에서 생성한 보안 그룹을 선택합니다.
-
고급 네트워크 구성 섹션을 확장합니다.
네트워크 인터페이스 1에서 네트워크 카드 인덱스 = 0, 디바이스 인덱스 = 0 및 인터페이스 유형 = ENA 포함 EFA를 선택합니다.
(선택 사항)
p4d.24xlarge또는p5.48xlarge와 같은 다중 카드 인스턴스 유형을 사용하는 경우, 필요한 추가 네트워크 인터페이스마다 네트워크 인터페이스 추가를 선택하고 네트워크 카드 인덱스에서 다음 미사용 인덱스를 선택한 다음, 디바이스 인덱스 = 1 및 인터페이스 유형 = ENA 포함 EFA 또는 EFA 전용을 선택합니다.
-
-
(선택 사항) 스토리지(Storage) 섹션에서 필요에 따라 볼륨을 구성합니다.
-
오른쪽의 요약(Summary) 패널에서 인스턴스 개수(Number of instances)의 경우 시작하려는 EFA 사용 인스턴스 개수를 입력한 다음에 인스턴스 시작(Launch instance)을 선택합니다.
클러스터의 모든 인스턴스에서 실행하도록 애플리케이션을 활성화하려면 리더 노드에서 멤버 노드로의 암호 없는 SSH 액세스를 사용해야 합니다. 리더 노드는 애플리케이션을 실행할 인스턴스입니다. 클러스터의 나머지 인스턴스는 멤버 노드입니다,
클러스터의 인스턴스 간에 암호 없는 SSH를 사용하려면
-
클러스터의 인스턴스 1개를 리더 노드로 선택하고 연결합니다.
-
strictHostKeyChecking을 비활성화하고 리더 노드에서ForwardAgent를 활성화합니다. 원하는 텍스트 편집기를 사용하여~/.ssh/config를 열고 다음을 추가합니다.Host * ForwardAgent yes Host * StrictHostKeyChecking no -
RSA 키 페어 생성:
$ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa키 페어는
$HOME/.ssh/디렉터리에 생성됩니다. -
리더 노드에서 프라이빗 키의 사용 권한을 변경합니다.
$chmod 600 ~/.ssh/id_rsa chmod 600 ~/.ssh/config -
원하는 텍스트 편집기를 사용하여
~/.ssh/id_rsa.pub를 열고 키를 추가합니다. -
클러스터의 각 멤버 노드에 대해 다음을 수행합니다.
-
인스턴스에 연결합니다.
-
원하는 텍스트 편집기를 사용하여
~/.ssh/authorized_keys를 열고 앞에서 복사한 퍼블릭 키를 추가합니다.
-
-
암호 없는 SSH가 예상대로 작동하는지 테스트하려면 리더 노드에 연결하고 다음 명령을 실행합니다.
$sshmember_node_private_ip키 또는 암호를 입력하라는 메시지가 표시되지 않은 상태에서 멤버 노드에 연결해야 합니다.
중요
7단계를 따른 경우에만 13단계를 따릅니다.
EFA 및 NIXL에 맞게 인스턴스가 올바르게 구성되었는지 확인하기 위해 테스트를 실행합니다.
NIXL이 설치되면 LLM 추론을 통해 NIXL을 사용하고 vLLM, SGLang 및 TensorRT-LLM과 같은 프레임워크를 제공할 수 있습니다.
vLLM을 사용하여 추론 워크로드를 처리하려면
-
vLLM을 설치합니다.
$pip install vllm -
NIXL로 vLLM 서버를 시작합니다. 다음 샘플 명령은 NIXL 핸드셰이크 연결, KV 커넥터, KV 역할 및 전송 백엔드를 위한 프리필(생산자) 인스턴스 하나와 디코딩(소비자) 인스턴스 하나를 생성합니다. 자세한 예제 및 스크립트는 NIXLConnector 사용 설명서
를 참조하세요. EFA에서 NIXL을 사용하려면 설정 및 사용 사례에 따라 환경 변수를 설정합니다.
-
생산자(프리필러) 구성
$vllm serveyour-application\ --port 8200 \ --enforce-eager \ --kv-transfer-config '{"kv_connector":"NixlConnector","kv_role":"kv_both","kv_buffer_device":"cuda","kv_connector_extra_config":{"backends":["LIBFABRIC"]}}' -
소비자(디코더) 구성
$vllm serveyour-application\ --port 8200 \ --enforce-eager \ --kv-transfer-config '{"kv_connector":"NixlConnector","kv_role":"kv_both","kv_buffer_device":"cuda","kv_connector_extra_config":{"backends":["LIBFABRIC"]}}'
위의 샘플 구성은 다음을 설정합니다.
-
kv_role~kv_both: 커넥터가 생산자와 소비자 역할을 모두 할 수 있는 대칭 기능을 활성화합니다. 이를 통해 역할 구분이 미리 결정되지 않는 실험 설정 및 시나리오에 유연성을 제공할 수 있습니다. -
kv_buffer_device~cuda: GPU 메모리를 사용할 수 있습니다. -
NIXL 백엔드를
LIBFABRIC에 연결하여 NIXL 트래픽이 EFA를 통과할 수 있도록 합니다.
-