구조 검증
이 솔루션에 설명된 것과 유사한 구조를 배치하려면 다음 항목의 조건에 따라 검증해야 합니다. GPU 선택, 클러스터 설정, 배포 및 배포, 자동 크기 조정, 성능 테스트, 보안 및 비용을 고려하십시오.
GPU 선택
텍스트 세그먼트를 음성으로 변환하여 성능, 확장성 및 비용 효율성을 보장하려면 GPU 기반 추론 서비스를 배포해야 합니다. GPU 모델(A10, A100, L40S)을 평가하여 사용 사례에 가장 적합한 모델을 결정할 수 있습니다.
다양한 GPU 유형으로 벤치마킹 테스트를 수행할 수 있습니다. 다음 표에서는 템플리트를 제공합니다. X 및 Y에 대한 값을 입력하고 해당 데이터를 사용하여 실제 성과를 원가와 비교합니다.
GPU 유형입니다. | 평균 대기 시간(250개 세그먼트당) | 처리량(세그먼트/초) | 참고 |
---|---|---|---|
A10 | X밀리초 | Y | 비용 절감, 개발/테스트에 적합 |
A100 | X밀리초 | Y | 고성능, 높은 비용 |
L40S | X밀리초 | Y | 가격 대비 성능 간 양호한 균형 |
- 권장 사항: 워크로드 크기, SLA 대기 시간 요구 사항 및 예산에 따라 GPU를 선택합니다.
- 최적화: 대기 시간 단축을 위해 FP16/혼합 정밀도(지원되는 경우)로 실행합니다.
OKE 클러스터 설계
배치에 맞게 OKE 클러스터를 설계합니다.
이 예에서는 두 개의 노드 풀이 있는 클러스터 설정을 사용합니다.
- NodePool 1(CPU 노드): UI, 워커, RabbitMQ 및 내부 DB를 실행합니다.
- NodePool 2(GPU 노드): TorchServe 추론 포드를 실행합니다.
GPU 노드에 충분한 BV가 있는지 확인합니다.
노드 풀에 레이블을 지정합니다.
- CPU 노드의
nodepool=cpu
- GPU 노드의
nodepool-gpu
및nvidia.com/gpu.present=true
OKE NVIDIA 장치 플러그인 추가 기능이 GPU 노드에서 사용으로 설정되고 nvidia-smi
가 작동하는지 확인합니다.
GPU 검증
OKE 노드와 TorchServe POD 모두에서 GPU를 사용할 수 있도록 하려면 다음 검증 단계를 실행합니다.
설계 모델 분배
.mar
모델을 추론 POD에 사용할 수 있도록 만들기 위한 두 가지 옵션이 있습니다.
- 컨테이너 스토리지 인터페이스(CSI) 드라이버를 사용하여 OCI 오브젝트 스토리지 버킷을 영구 볼륨 클레임(PVC)으로 사용합니다.
- SCP(보안 복사 프로토콜)를 사용하여 모델을 OCI 파일 스토리지로 전송하고 파일 시스템을 PVC의 마운트 지점으로 사용합니다. 예:
scp -i /path/to/private_key /path/to/local/model.mar opc@<file_storage_instance_ip>:/path/to/destination/mount/point/models/
단순성을 위해 OCI Object Storage를 추천하고, 업데이트를 자주 사용하는 모델이 여러 개 있는 경우 OCI File Storage를 추천합니다.
TorchServe 배치
TorchServe 배치 방법을 검증합니다.
다음 YAML 파일은 배치 및 구성에 대한 예를 제공합니다.
- OCI 로드 밸런싱(OKE에서 TorchServe POD로 수신)을 사용하여 노출합니다.
- 로드 밸런서의 TLS로 보안합니다.
-
TorchServe 관리 포트(8081)를 공용 인터넷에 노출하지 마십시오.
주:
- 실제 TorchServe 컨테이너 위치 및 버전을 가리키도록 container
image:
문을 수정합니다. multispk_20250121_tts
은 여기서 예로 사용되는 사용자정의 모델 이름입니다. 사용자 고유의 모델 이름 및.mar
파일로 바꿀 수 있습니다.
토치서브-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: torchserve
labels:
app: torchserve
spec:
replicas: 1
selector:
matchLabels:
app: torchserve
template:
metadata:
labels:
app: torchserve
spec:
nodeSelector:
nodepool: torchserve
tolerations:
- key: "nvidia.com/gpu"
operator: "Exists"
effect: "NoSchedule"
imagePullSecrets:
- name: ocir-creds
containers:
- name: torchserve
image: ocir.<your-region>.oci.oraclecloud.com/<tenancy-namespace>/<torchserve_image>:<version>
ports:
- containerPort: 8080
- containerPort: 8081
- containerPort: 8082
- containerPort: 7070
- containerPort: 7071
env:
- name: GPUS__DEVICES
value: "0"
- name: METRICS_MODE
value: "logical" # or "endpoint"
- name: ENABLE_METRICS_API
value: "true"
resources:
limits:
nvidia.com/gpu: 1
volumeMounts:
- name: models-volume
mountPath: /home/model-server/model-store
volumes:
- name: models-volume
persistentVolumeClaim:
claimName: fss-voiceengine-models
구성 맵 - torchserve.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: config-properties
namespace: default # Adjust the namespace as necessary
data:
config.properties: |
inference_address=http://0.0.0.0:8080
management_address=http://0.0.0.0:8081
metrics_address=http://0.0.0.0:8082
number_of_netty_threads=32
job_queue_size=1000
model_store=/home/model-server/model-store
workflow_store=/home/model-server/wf-store
install_py_dep_per_model=true
max_request_size=196605000
max_response_size=196605000
default_workers_per_model=1
job_queue_size=100
metrics_mode=logical
load_models=/home/model-server/model-store/multispk_20250121_tts.mar
자동 스케일링 설정
Pod 및 워커 레벨에서 자동 스케일링을 설정합니다.
Prometheus 측정 단위와 함께 Kubernetes 이벤트 기반 자동 스케일링(KEDA)을 사용하여 Pod 레벨에서 자동 스케일링을 설정하면 요청 대기열 깊이 또는 사용자정의 측정 단위 또는 CPU/GPU 활용률에 따라 TorchServe POD를 확장할 수 있습니다.
작업자 레벨 자동 크기 조정을 설정합니다(TorchServe).
주:
다음 예에서는 TorchServe 모델 수명 주기를multispk_20250121_tts
와 함께 사용합니다.
보안 및 비용 최적화 고려 사항
설계를 검증할 때 다음과 같은 보안 및 비용 최적화 요소를 고려하십시오.
- 보안 고려 사항:
- 로드 밸런서 또는 수신에서 TLS 종료를 강제 적용합니다.
- TorchServe 관리 API를 내부 전용으로 유지합니다.
- OCI ID 및 액세스 관리 및 네트워크 보안 그룹을 사용하여 액세스를 제한합니다.
- 비용 최적화 고려 사항:
- 서비스 수준 계약(SLA)과 비용 간의 균형을 기준으로 GPU 유형을 선택합니다.
- 일정이 잡힌 스케일링을 사용합니다(사용량이 적은 시간 동안 GPU 노드 풀 스케일 다운).
- 모델이 자주 업데이트되지 않는 경우 OCI File Storage보다 OCI Object Storage를 사용합니다.
- 추론이 항상 24 × 7을 실행하는 것은 아닙니다. 유휴 기간 동안 사용되지 않는 GPU와 학습 워크로드를 공유하여 활용도를 극대화하고 비용을 절감할 수 있습니다.