기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
모델 가중치 캐싱 및 이미지 캐싱
추론 배포를 확장할 때 각 새 포드는 레지스트리에서 추론 서버 컨테이너 이미지를 가져와야 합니다. 또한 트래픽을 처리하기 전에 원격 스토리지(Amazon S3 또는 Amazon FSx)에서 모델 가중치를 다운로드해야 합니다. 대규모 언어 모델의 경우 모델 가중치를 다운로드하고 컨테이너 이미지를 가져오는 것이 콜드 스타트 지연 시간에 가장 큰 영향을 미칩니다.
스케일 아웃 중에 이러한 병목 현상을 제거하려면 Amazon SageMaker HyperPod 추론에서 다음 호스트-로컬 캐싱 메커니즘 중 하나 또는 둘 다를 구성합니다.
- 모델 가중치 캐싱(
weightsCache) -
는 적합한 각 노드의 호스트-로컬 NVMe 스토리지에 모델 가중치 파일을 미리 채웁니다. 동일한 노드의 포드는 원격 모델 소스에서 다운로드하는 대신 로컬 스토리지에서 가중치를 로드하므로 포드 간에 중복 다운로드가 필요하지 않습니다.
- 이미지 캐싱(
imageCache) -
추론 서버 컨테이너 이미지를 대상 노드로 미리 풀링하여 콜드 이미지 풀을 기다리지 않고 새 포드가 시작되도록 합니다.
InferenceEndpointConfig 또는 JumpStartModel 배포의 modelCacheConfig 필드를 통해 두 캐싱 메커니즘을 모두 구성합니다.
가중치 캐싱 및 이미지 캐싱을 독립적으로 또는 함께 활성화할 수 있습니다. 두 기능 모두 Amazon SageMaker JumpStart 배포(개방 가중치 및 게이트 모델 모두) 및 Amazon S3 또는 Amazon FSx의 사용자 지정 모델을 포함하여 모든 Amazon SageMaker HyperPod 추론 모델 소스에서 작동합니다. Amazon S3 FSx
사전 조건
캐싱을 활성화하기 전에 다음을 확인합니다.
- 로컬 NVMe 스토리지가 있는 인스턴스 유형
-
모델 가중치 캐싱은 호스트-로컬 NVMe 스토리지(
/opt/dlami/nvme기본값)에 가중치를 저장합니다. 인스턴스 유형은 구성된에서 로컬 NVMe 스토리지를 제공해야 합니다hostPath. - 충분한 NVMe 용량
-
노드에 모델에 충분한 로컬 스토리지가 있는지 확인합니다. 각 배포는 자체 격리된 캐시 디렉터리를 사용하므로 동일한 노드에 있는 여러 캐시 배포는 각각 자체 스토리지를 사용합니다.
- 추론 연산자
-
클러스터에는 모델 캐싱을 지원하는 HyperPod 추론 연산자 버전이 있어야 합니다.
modelCacheConfig필드가 인식되지 않으면 추론 연산자 추가 기능을 최신 버전으로 업데이트합니다.
중요
인스턴스 유형에 구성된에 로컬 NVMe 스토리지가 없는 경우 hostPath모델 가중치 캐싱은 캐시를 웜하지 않으며 추론 포드는 원격 모델 소스에서 가중치를 다운로드하는 것으로 돌아갑니다. 이 기능을 활성화하기 전에 인스턴스 유형이 로컬 NVMe 스토리지를 제공하는지 확인합니다.
모델 가중치 캐싱 및 이미지 캐싱 구성
InferenceEndpointConfig 또는 JumpStartModel 리소스spec의에 modelCacheConfig 블록을 추가합니다. 다음 예제에서는 모델 가중치 캐싱과 이미지 캐싱을 모두 활성화합니다.
spec: # ... model source, worker, and TLS configuration ... modelCacheConfig: weightsCache: enabled: true hostPath: /opt/dlami/nvme imageCache: enabled: true
modelCacheConfig 필드는 다음 하위 필드를 지원합니다.
| Field | 기본값 | 설명 |
|---|---|---|
weightsCache.enabled |
false |
호스트-로컬 모델 가중치 캐싱을 활성화할지 여부입니다. true인 경우 연산자는 호스트 로컬 스토리지에 모델 가중치를 미리 채우고 추론 포드에 탑재합니다. |
weightsCache.hostPath |
/opt/dlami/nvme |
캐시된 모델 가중치가 저장되는 호스트 경로입니다. 최대 255자의 비어 있지 않은 절대 경로여야 합니다. |
imageCache.enabled |
false |
컨테이너 이미지 캐싱 활성화 여부. true인 경우 연산자는 추론 서버 컨테이너 이미지를 대상 노드로 미리 끌어옵니다. |
모델 가중치 캐싱 작동 방식
weightsCache.enabled가 인 경우 true운영자는 추론 포드가 트래픽 제공을 시작하기 전에 원격 모델 소스(Amazon S3 또는 Amazon FSx)에서 각 적격 노드의 호스트-로컬 NVMe 스토리지로 모델 가중치를 다운로드합니다. 추론 포드는 캐시된 가중치를 읽기 전용으로 탑재하고 원격 소스에서 모델을 반복적으로 다운로드하는 대신 로컬 스토리지에서 모델을 로드합니다.
연산자는 추론 배포의 예약 제약 조건과 일치하는 노드의 캐시를 채우고 캐시가 웜 상태일 때 각 노드에 레이블을 지정합니다. 추론 배포는이 레이블에서 선호하는 노드 선호도를 사용하므로 포드는 사용 가능한 경우 웜 노드에 예약되지만 다른 곳에서는 예약할 수 있습니다.
- 격리
-
각 배포는 구성된에서 격리된 배포별 캐시 디렉터리를 사용
hostPath하므로 동일한 노드에 여러 모델 배포가 서로 간섭하지 않습니다. - 캐시 누락 대체
-
캐시를 아직 사용할 수 없는 노드에서 포드가 예약된 경우 배포는 원격 모델 소스에서 직접 모델 가중치를 로드하는 것으로 돌아가므로 웜 캐시 없이도 배포가 계속 작동합니다.
- 노드 교체
-
노드가 교체되는 경우(예: 장애 후) 운영자는 포드가 우선적으로 예약되기 전에 새 노드에서 캐시를 다시 워밍해야 합니다. 기존 웜 노드는 그 동안 트래픽을 계속 제공합니다.
- 삭제 시 정리
-
배포를 삭제하면 운영자는 채워진 노드에서 캐시된 가중치 파일을 제거합니다.
이미지 캐싱 작동 방식
imageCache.enabled가 이면 연산true자는 추론 서버 컨테이너 이미지를 대상 노드로 미리 끌어옵니다. 이미지가 이미 노드에 있기 때문에 새 추론 포드는 포드 시작을 지연시키는 콜드 이미지 풀을 방지합니다. 이는 대규모 추론 서버 이미지와 자주 확장되는 배포에 특히 유용합니다.
이미지 캐싱은 모델 가중치 캐싱과 독립적입니다. 자체적으로 활성화하거나 가중치 캐싱과 결합하여 스케일 아웃 중에 이미지 풀 및 가중치 다운로드 시간을 모두 줄일 수 있습니다.
캐싱이 작동하는지 확인
다음 검사를 사용하여 배포에 대해 캐싱이 활성 상태인지 확인합니다.
노드 레이블에서 웜 캐시 확인
노드의 캐시가 웜 상태이면 연산자는 캐시 준비 레이블을 적용합니다. 모델 가중치 캐싱은 접두사가 있는 레이블을 사용하고inference.sagemaker.aws.amazon.com/weights-cache-ready., 이미지 캐싱은 접두사를 사용하며inference.sagemaker.aws.amazon.com/image-cache-ready., 각 접미사에는 캐시 구성의 UID가 붙습니다.
kubectl get nodes --show-labels | grep "cache-ready"
출력 없음은 아직 캐시를 워밍한 노드가 없음을 의미합니다.
캐시 탑재에 대한 포드 이벤트 확인
추론 포드를 검사하고 호스트 로컬 캐시 경로를 읽기 전용으로 탑재하는지 확인합니다. hostPath 볼륨이 없으면 포드가 원격 스토리지에서 가중치를 로드하는 것입니다.
kubectl describe podinference-pod-name-nnamespace
운영자 로그 확인
추론 연산자 로그에서 캐시 워밍업 활동 또는 오류를 검토합니다.
kubectl logs -n hyperpod-inference-system deployment/hyperpod-inference-controller-manager | grep -i "cache"
문제 해결
| 증상 | 가능한 원인 | 해결 방법 |
|---|---|---|
| 캐싱이 활성화된 경우에도 포드는 느리게 시작됩니다. | NVMe 경로가 인스턴스 유형에 존재하지 않습니다. | 인스턴스 유형에 로컬 NVMe 스토리지가 있고 실제 탑재 지점과 hostPath 일치하는지 확인합니다. |
| 캐시는 웜되지 않습니다. | 호스트 경로에 디스크 공간이 부족합니다. | 에서 사용 가능한 용량을 확인합니다hostPath. 대형 모델에는 상당한 로컬 스토리지가 필요할 수 있습니다. |
| 캐시 준비됨으로 레이블이 지정된 노드가 없습니다. | 캐시 다운로드에 실패했거나 원격 소스에 연결할 수 없습니다. | 운영자 로그에서 다운로드 오류를 확인하고 Amazon S3 또는 Amazon FSx에 대한 네트워크 액세스를 확인합니다. |
| 여러 배포로 인해 노드에 디스크 압력이 발생합니다. | 캐시 배포는 동일한 노드 NVMe 스토리지를 공유합니다. | 별도의 인스턴스 그룹을 사용하거나 노드당 동시 캐시 배포 수를 줄입니다. |
고려 사항
-
모델 가중치 캐싱에는 로컬 NVMe 스토리지가 있는 인스턴스 유형이 필요합니다. EBS 전용 인스턴스는 지원되지 않습니다.
-
캐시 가능한 최대 모델 크기는 인스턴스 유형에서 사용 가능한 NVMe 용량에 따라 제한됩니다.
-
캐시 워밍업 시간은 모델 크기와 원격 모델 소스에 대한 네트워크 처리량에 따라 달라집니다.