

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 사용자 지정 모델 배포
<a name="deploy-trained-model"></a>

훈련이 완료되면 추론을 위해 모델을 배포합니다. CLI 또는 SDK를 사용하여 사용자 지정 모델을 배포할 수 있습니다.

## 모델 아티팩트 찾기
<a name="locate-model-artifacts"></a>
+ **S3 버킷 확인**: 모델 아티팩트가 `s3://my-bucket/model-artifacts/`에 저장되었는지 확인합니다.
+ **정확한 경로 참고**: 전체 경로가 필요합니다(예: `s3://my-bucket/model-artifacts/test-pytorch-job/model.tar.gz`).

## CLI를 사용한 배포
<a name="deploy-using-cli"></a>

다음 명령을 실행하여 사용자 지정 모델을 배포합니다.

```
hyp create hyp-custom-endpoint \
    --version 1.0 \
    --env '{"HF_MODEL_ID":"/opt/ml/model", "SAGEMAKER_PROGRAM":"inference.py", }' \
    --model-source-type s3 \
    --model-location test-pytorch-job \
    --s3-bucket-name my-bucket \
    --s3-region us-east-2 \
    --prefetch-enabled true \ 
    --image-uri 763104351884.dkr.ecr.us-east-1.amazonaws.com/pytorch-inference:latest \
    --model-volume-mount-name model-weights \
    --container-port 8080 \
    --resources-requests '{"cpu": "30000m", "nvidia.com/gpu": 1, "memory": "100Gi"}' \
    --resources-limits '{"nvidia.com/gpu": 1}' \
    --tls-output-s3-uri s3://{{<bucket_name>}} \
    --instance-type ml.g5.8xlarge \
    --endpoint-name endpoint-custom-pytorch \
    --model-name pytorch-custom-model
```

이 명령은 훈련된 모델을 `endpoint-custom-pytorch`라는 엔드포인트로 배포합니다. `--model-location`은 훈련 작업의 아티팩트 경로를 참조합니다.

## Python SDK를 사용한 배포
<a name="deploy-using-sdk"></a>

다음 콘텐츠를 사용하여 Python 스크립트를 생성합니다.

```
from sagemaker.hyperpod.inference.config.hp_custom_endpoint_config import Model, Server, SageMakerEndpoint, TlsConfig, EnvironmentVariables
from sagemaker.hyperpod.inference.hp_custom_endpoint import HPCustomEndpoint

model = Model(
    model_source_type="s3",
    model_location="test-pytorch-job",
    s3_bucket_name="my-bucket",
    s3_region="us-east-2",
    prefetch_enabled=True
)

server = Server(
    instance_type="ml.g5.8xlarge",
    image_uri="763104351884.dkr.ecr.us-east-2.amazonaws.com/huggingface-pytorch-tgi-inference:2.4.0-tgi2.3.1-gpu-py311-cu124-ubuntu22.04-v2.0",
    container_port=8080,
    model_volume_mount_name="model-weights"
)

resources = {
    "requests": {"cpu": "30000m", "nvidia.com/gpu": 1, "memory": "100Gi"},
    "limits": {"nvidia.com/gpu": 1}
}

env = EnvironmentVariables(
    HF_MODEL_ID="/opt/ml/model",
    SAGEMAKER_PROGRAM="inference.py",
    SAGEMAKER_SUBMIT_DIRECTORY="/opt/ml/model/code",
    MODEL_CACHE_ROOT="/opt/ml/model",
    SAGEMAKER_ENV="1"
)

endpoint_name = SageMakerEndpoint(name="endpoint-custom-pytorch")

tls_config = TlsConfig(tls_certificate_output_s3_uri="s3://{{<bucket_name>}}")

custom_endpoint = HPCustomEndpoint(
    model=model,
    server=server,
    resources=resources,
    environment=env,
    sage_maker_endpoint=endpoint_name,
    tls_config=tls_config
)

custom_endpoint.create()
```

## API 엔드포인트 호출
<a name="invoke-endpoint"></a>

### CLI 사용
<a name="invoke-using-cli"></a>

샘플 입력을 사용하여 엔드포인트를 테스트합니다.

```
hyp invoke hyp-custom-endpoint \
    --endpoint-name endpoint-custom-pytorch \
    --body '{"inputs":"What is the capital of USA?"}'
```

이렇게 하면 '미국의 수도는 워싱턴 D.C입니다'와 같은 모델의 응답이 반환됩니다.

### SDK 사용
<a name="invoke-using-sdk"></a>

Python 스크립트에 다음 코드를 추가합니다.

```
data = '{"inputs":"What is the capital of USA?"}'
response = custom_endpoint.invoke(body=data).body.read()
print(response)
```

## 엔드포인트 관리
<a name="manage-endpoint"></a>

### CLI 사용
<a name="manage-using-cli"></a>

엔드포인트를 나열하고 검사합니다.

```
hyp list hyp-custom-endpoint
hyp get hyp-custom-endpoint --name endpoint-custom-pytorch
```

### SDK 사용
<a name="manage-using-sdk"></a>

Python 스크립트에 다음 코드를 추가합니다.

```
logs = custom_endpoint.get_logs()
print(logs)
```

## 리소스 정리
<a name="cleanup-resources"></a>

완료되면 엔드포인트를 삭제하여 불필요한 비용을 방지합니다.

### CLI 사용
<a name="cleanup-using-cli"></a>

```
hyp delete hyp-custom-endpoint --name endpoint-custom-pytorch
```

### SDK 사용
<a name="cleanup-using-sdk"></a>

```
custom_endpoint.delete()
```

## 다음 단계
<a name="next-steps"></a>

SageMaker HyperPod를 사용하여 사용자 지정 모델을 성공적으로 배포하고 테스트했습니다. 이제 이 엔드포인트를 애플리케이션에서 추론에 사용할 수 있습니다.