3.11. 단일 모델 제공 플랫폼을 사용하여 모델 배포
단일 모델 제공 플랫폼에서 각 모델은 자체 모델 서버에 배포됩니다. 이를 통해 증가된 리소스가 필요한 대규모 모델을 배포, 모니터링, 확장 및 유지 관리할 수 있습니다.
3.11.1. 단일 모델 제공 플랫폼 활성화
KServe를 설치하면 Red Hat OpenShift AI 대시보드를 사용하여 단일 모델 제공 플랫폼을 활성화할 수 있습니다. 대시보드를 사용하여 플랫폼의 모델 제공 런타임을 활성화할 수도 있습니다.
사전 요구 사항
- OpenShift AI 관리자 권한이 있는 사용자로 OpenShift AI에 로그인했습니다.
- KServe를 설치했습니다.
- 클러스터 관리자가 KServe 구성 요소를 사용하는 단일 모델 제공 플랫폼을 선택하는 기능을 비활성화하도록 OpenShift AI 대시보드 구성을 편집 하지 않았습니다. 자세한 내용은 대시보드 구성 옵션을 참조하십시오.
프로세스
다음과 같이 플랫폼을 제공하는 단일 모델을 활성화합니다.
-
왼쪽 메뉴에서 설정
클러스터 설정을 클릭합니다. - 모델 제공 플랫폼 섹션을 찾습니다.
- 프로젝트에 단일 모델 제공 플랫폼을 활성화하려면 단일 모델 제공 플랫폼 확인란을 선택합니다.
- 변경 사항 저장을 클릭합니다.
-
왼쪽 메뉴에서 설정
다음과 같이 단일 모델 제공 플랫폼에 대해 사전 설치된 런타임을 활성화합니다.
OpenShift AI 대시보드의 왼쪽 메뉴에서 설정
Serving 런타임 을 클릭합니다. Serving 런타임 페이지에는 사전 설치된 런타임 및 사용자가 추가한 모든 사용자 지정 런타임이 표시됩니다.
사전 설치된 런타임에 대한 자세한 내용은 지원되는 런타임 을 참조하십시오.
사용할 런타임을 Enabled 로 설정합니다.
단일 모델 제공 플랫폼은 이제 모델 배포에 사용할 수 있습니다.
3.11.2. 단일 모델 제공 플랫폼에 대한 사용자 정의 모델 서비스 런타임 추가
모델 서비스 런타임은 지정된 모델 프레임워크 세트 및 해당 프레임워크에서 지원하는 모델 형식에 대한 지원을 추가합니다. OpenShift AI에 포함된 사전 설치된 런타임 을 사용할 수 있습니다. 기본 런타임이 요구 사항을 충족하지 않는 경우 자체 사용자 지정 런타임을 추가할 수도 있습니다. 예를 들어 TGIS 런타임에서 TGI(Hurgging Cryostat Generation Inference) 에서 지원하는 모델 형식을 지원하지 않는 경우 사용자 지정 런타임을 생성하여 모델에 대한 지원을 추가할 수 있습니다.
관리자는 OpenShift AI 인터페이스를 사용하여 사용자 지정 모델 제공 런타임을 추가하고 활성화할 수 있습니다. 그런 다음 단일 모델 제공 플랫폼에 모델을 배포할 때 사용자 지정 런타임을 선택할 수 있습니다.
Red Hat은 사용자 지정 런타임을 지원하지 않습니다. 사용자가 추가한 모든 사용자 지정 런타임을 사용하고 올바르게 구성 및 유지 관리를 수행할 수 있는지 확인해야 합니다.
사전 요구 사항
- OpenShift AI 관리자 권한이 있는 사용자로 OpenShift AI에 로그인했습니다.
- 사용자 지정 런타임을 빌드하고 Quay 와 같은 컨테이너 이미지 리포지토리에 이미지를 추가했습니다.
프로세스
OpenShift AI 대시보드에서 설정 > Serving 런타임 을 클릭합니다.
Serving 런타임 페이지가 열리고 이미 설치 및 활성화된 모델 제공 런타임이 표시됩니다.
사용자 지정 런타임을 추가하려면 다음 옵션 중 하나를 선택합니다.
- 기존 런타임(예: KServe의 경우 TGIS Standalone ServingRuntime)으로 시작하려면 기존 런타임 옆에 있는 작업 메뉴(예: TGIS Standalone ServingRuntime)를 클릭한 다음 중복 을 클릭합니다.
- 새 사용자 지정 런타임을 추가하려면 제공 런타임 추가 를 클릭합니다.
- Select the model serving platforms this runtime supports list, select Single-model serving platform.
- Select the API protocol this runtime supports list에서 지원하는 REST 또는 gRPC 를 선택합니다.
선택 사항: 새 런타임을 시작한 경우(기존 런타임을 복제하지 않고) 다음 옵션 중 하나를 선택하여 코드를 추가합니다.
YAML 파일 업로드
- 파일 업로드 를 클릭합니다.
파일 브라우저에서 컴퓨터에서 YAML 파일을 선택합니다.
포함된 YAML 편집기가 열리고 업로드한 파일의 내용이 표시됩니다.
편집기에서 직접 YAML 코드를 입력합니다.
- 처음부터 시작을 클릭합니다.
- 포함된 편집기에서 YAML 코드를 직접 입력하거나 붙여넣습니다.
참고대부분의 경우 사용자 지정 런타임을 생성하려면
ServingRuntime
사양의env
섹션에 새 또는 사용자 지정 매개변수를 추가해야 합니다.추가를 클릭합니다.
Serving 런타임 페이지가 열리고 설치된 업데이트된 런타임 목록이 표시됩니다. 추가한 사용자 지정 런타임이 자동으로 활성화되어 있는지 확인합니다. 런타임을 생성할 때 지정한 API 프로토콜이 표시됩니다.
- 선택 사항: 사용자 지정 런타임을 편집하려면 작업 메뉴( Cryostat)를 클릭하고 편집을 선택합니다.
검증
- 추가한 사용자 정의 모델 제공 런타임은 Serving 런타임 페이지에 활성화된 상태로 표시됩니다.
3.11.3. 단일 모델 제공 플랫폼에 대해 테스트 및 검증된 모델 제공 런타임 추가
사전 설치되어 사용자 지정 모델 제공 런타임 외에도 Red Hat 테스트 및 검증된 모델 제공 런타임(예: NVIDIA Triton Inference Server )을 사용하여 요구 사항을 지원할 수도 있습니다. Red Hat 테스트 및 검증된 런타임에 대한 자세한 내용은 Red Hat OpenShift AI에 대한 테스트 및 검증된 런타임을 참조하십시오.
Red Hat OpenShift AI 대시보드를 사용하여 단일 모델 제공 플랫폼에 대해 NVIDIA Triton 유추 서버 런타임을 추가하고 활성화할 수 있습니다. 그런 다음 단일 모델 제공 플랫폼에 모델을 배포할 때 런타임을 선택할 수 있습니다.
사전 요구 사항
- OpenShift AI 관리자 권한이 있는 사용자로 OpenShift AI에 로그인했습니다.
프로세스
OpenShift AI 대시보드에서 설정 > Serving 런타임 을 클릭합니다.
Serving 런타임 페이지가 열리고 이미 설치 및 활성화된 모델 제공 런타임이 표시됩니다.
- 제공 런타임 추가를 클릭합니다.
- Select the model serving platforms this runtime supports list, select Single-model serving platform.
- Select the API protocol this runtime supports list에서 지원하는 REST 또는 gRPC 를 선택합니다.
처음부터 시작을 클릭합니다.
REST API 프로토콜을 선택한 경우 포함된 편집기에 다음 YAML 코드를 직접 입력하거나 붙여넣습니다.
apiVersion: serving.kserve.io/v1alpha1 kind: ServingRuntime metadata: name: triton-kserve-rest labels: opendatahub.io/dashboard: "true" spec: annotations: prometheus.kserve.io/path: /metrics prometheus.kserve.io/port: "8002" containers: - args: - tritonserver - --model-store=/mnt/models - --grpc-port=9000 - --http-port=8080 - --allow-grpc=true - --allow-http=true image: nvcr.io/nvidia/tritonserver:23.05-py3 name: kserve-container resources: limits: cpu: "1" memory: 2Gi requests: cpu: "1" memory: 2Gi ports: - containerPort: 8080 protocol: TCP protocolVersions: - v2 - grpc-v2 supportedModelFormats: - autoSelect: true name: tensorflow version: "1" - autoSelect: true name: tensorflow version: "2" - autoSelect: true name: onnx version: "1" - name: pytorch version: "1" - autoSelect: true name: keras version: "2"
gRPC API 프로토콜을 선택한 경우 포함된 편집기에 다음 YAML 코드를 직접 입력하거나 붙여넣습니다.
apiVersion: serving.kserve.io/v1alpha1 kind: ServingRuntime metadata: name: triton-kserve-grpc labels: opendatahub.io/dashboard: "true" spec: annotations: prometheus.kserve.io/path: /metrics prometheus.kserve.io/port: "8002" containers: - args: - tritonserver - --model-store=/mnt/models - --grpc-port=9000 - --http-port=8080 - --allow-grpc=true - --allow-http=true image: nvcr.io/nvidia/tritonserver:23.05-py3 name: kserve-container ports: - containerPort: 9000 name: h2c protocol: TCP volumeMounts: - mountPath: /dev/shm name: shm resources: limits: cpu: "1" memory: 2Gi requests: cpu: "1" memory: 2Gi protocolVersions: - v2 - grpc-v2 supportedModelFormats: - autoSelect: true name: keras version: "2" - autoSelect: true name: tensorflow version: "1" - autoSelect: true name: tensorflow version: "2" - autoSelect: true name: onnx version: "1" - name: pytorch version: "1" volumes: - emptyDir: null medium: Memory sizeLimit: 2Gi name: shm
-
metadata.name
필드에서 추가하는 런타임 값이 이미 추가한 런타임 값과 일치하지 않는지 확인합니다. 선택 사항: 추가하는 런타임에 사용자 정의 표시 이름을 사용하려면
metadata.annotations.openshift.io/display-name
필드를 추가하고 다음 예와 같이 값을 지정합니다.apiVersion: serving.kserve.io/v1alpha1 kind: ServingRuntime metadata: name: kserve-triton annotations: openshift.io/display-name: Triton ServingRuntime
참고런타임에 대한 사용자 정의 표시 이름을 구성하지 않으면 OpenShift AI에
metadata.name
필드의 값이 표시됩니다.생성을 클릭합니다.
Serving 런타임 페이지가 열리고 설치된 업데이트된 런타임 목록이 표시됩니다. 추가한 런타임이 자동으로 활성화되어 있는지 확인합니다. 런타임을 생성할 때 지정한 API 프로토콜이 표시됩니다.
- 선택 사항: 런타임을 편집하려면 작업 메뉴( Cryostat)를 클릭하고 편집을 선택합니다.
검증
- 추가한 model-serving 런타임은 Serving 런타임 페이지에 활성화된 상태로 표시됩니다.
추가 리소스
3.11.4. 단일 모델 제공 플랫폼에 모델 배포
단일 모델 제공 플랫폼을 활성화하면 사전 설치 또는 사용자 정의 모델 제공 런타임을 활성화하고 플랫폼에 모델을 배포할 수 있습니다.
text Generation Inference Server (TGIS) 는 Hugging Cryostat TGI 의 초기 포크를 기반으로 합니다. Red Hat은 TGI 모델을 지원하기 위해 독립형 TGIS 런타임을 계속 개발할 예정입니다. 현재 OpenShift AI 버전에서 모델이 작동하지 않으면 향후 버전에 지원이 추가될 수 있습니다. 그동안 TGI 모델을 지원하기 위해 자체 사용자 지정 런타임을 추가할 수도 있습니다. 자세한 내용은 단일 모델 제공 플랫폼의 사용자 지정 모델 서비스 런타임 추가를 참조하십시오.
사전 요구 사항
- Red Hat OpenShift AI에 로그인했습니다.
-
OpenShift AI 그룹을 사용하는 경우 OpenShift의 사용자 그룹 또는 관리자 그룹(예:
rhoai-users
또는rhoai-admins
)의 일부입니다. - KServe를 설치했습니다.
- 단일 모델 제공 플랫폼을 활성화했습니다.
- 배포된 모델에 대해 토큰 권한 부여 및 외부 모델 경로를 활성화하기 위해 권한 부여 공급자로 Authorino를 추가했습니다. 자세한 내용은 단일 모델 제공 플랫폼에 대한 권한 부여 공급자 추가를 참조하십시오.
- 데이터 과학 프로젝트를 생성했습니다.
- S3 호환 오브젝트 스토리지에 액세스할 수 있습니다.
- 배포하려는 모델의 경우 S3 호환 오브젝트 스토리지 버킷의 관련 폴더 경로를 알고 있습니다.
- Cakeygent-TGIS 런타임을 사용하려면 모델을 Cafindt 형식으로 변환했습니다. 예를 들어 caovnt-tgis-serving 리포지토리의 cakeyt 형식으로의 Hugging faces Hub 모델 변환을 참조하십시오.
- 모델 서버에서 GPU(그래픽 처리 장치)를 사용하려는 경우 OpenShift AI에서 GPU 지원을 활성화했습니다. NVIDIA GPU 활성화를 참조하십시오.
- vLLM 런타임을 사용하려면 OpenShift AI에서 GPU 지원을 활성화하고 클러스터에 Node Feature Discovery Operator를 설치 및 구성했습니다. 자세한 내용은 Node Feature Discovery Operator 설치 및 NVIDIA GPU 활성화를참조하십시오.
OpenShift AI 2.15에서 Red Hat은 모델 제공을 위해 NVIDIA GPU 액셀러레이터만 지원합니다.
RHEL AI 모델을 배포하려면 다음을 수행합니다.
- vLLM 런타임을 활성화했습니다.
- Red Hat 컨테이너 레지스트리에서 모델을 다운로드하여 S3 호환 오브젝트 스토리지에 업로드했습니다.
프로세스
왼쪽 메뉴에서 Data Science Projects 를 클릭합니다.
Data Science Projects 페이지가 열립니다.
모델을 배포할 프로젝트의 이름을 클릭합니다.
프로젝트 세부 정보 페이지가 열립니다.
- 모델 탭을 클릭합니다.
다음 작업 중 하나를 수행합니다.
- 플랫폼 타일을 제공하는 단일 모델이 표시되면 타일에 모델 배포를 클릭합니다.
- 타일이 표시되지 않으면 모델 배포 버튼을 클릭합니다.
모델 배포 대화 상자가 열립니다.
- 모델 배포 이름 필드에 배포 중인 모델의 고유 이름을 입력합니다.
- Serving 런타임 필드에서 활성화된 런타임을 선택합니다.
- 모델 프레임워크(이름 - 버전) 목록에서 값을 선택합니다.
- 배포할 모델 서버 복제본 수에서 값을 지정합니다.In the Number of model server replicas to deploy field, specify a value.
- 모델 서버 크기 목록에서 값을 선택합니다.From the Model server size list, select a value.
다음 옵션은 클러스터에서 GPU 지원을 활성화하고 가속기를 생성한 경우에만 사용할 수 있습니다.
- 액셀러레이터 목록에서 가속기 를 선택합니다.
- 이전 단계에서 가속기를 선택한 경우 수의 가속기 필드에 사용할 가속기의 수 를 지정합니다.
- 선택 사항: 모델 경로 섹션에서 외부 경로 확인란을 통해 사용 가능한 배포된 모델 만들기 확인란을 선택하여 배포된 모델을 외부 클라이언트에서 사용할 수 있도록 합니다.
배포된 모델에 대한 유추 요청에 대한 토큰 권한 부여가 필요한 경우 다음 작업을 수행합니다.
- 토큰 권한 부여 필요 를 선택합니다.
- 서비스 계정 이름 필드에 토큰이 생성될 서비스 계정 이름을 입력합니다.
모델의 위치를 지정하려면 다음 작업 세트 중 하나를 수행합니다.
기존 데이터 연결 사용
- 기존 데이터 연결을 선택합니다.
- 이름 목록에서 이전에 정의한 데이터 연결을 선택합니다.
경로 필드에서 지정된 데이터 소스에 모델이 포함된 폴더 경로를 입력합니다.
중요OpenVINO 모델 서버 런타임에는 모델 경로를 지정하는 방법에 대한 특정 요구 사항이 있습니다. 자세한 내용은 OpenShift AI 릴리스 노트의 알려진 문제 RHOAIENG-3025 를 참조하십시오.
새 데이터 연결 사용
- 모델에 액세스할 수 있는 새 데이터 연결을 정의하려면 새 데이터 연결을 선택합니다.
- 이름 필드에 데이터 연결의 고유 이름을 입력합니다.
- 액세스 키 필드에 S3 호환 오브젝트 스토리지 공급자의 액세스 키 ID를 입력합니다.
- Secret 키 필드에 지정한 S3 호환 오브젝트 스토리지 계정의 시크릿 액세스 키를 입력합니다.
- Endpoint 필드에 S3 호환 오브젝트 스토리지 버킷의 끝점을 입력합니다.
- Region 필드에 S3 호환 오브젝트 스토리지 계정의 기본 리전을 입력합니다.
- Bucket 필드에 S3 호환 오브젝트 스토리지 버킷의 이름을 입력합니다.
경로 필드에 데이터 파일이 포함된 S3 호환 오브젝트 스토리지에 폴더 경로를 입력합니다.
중요OpenVINO 모델 서버 런타임에는 모델 경로를 지정하는 방법에 대한 특정 요구 사항이 있습니다. 자세한 내용은 OpenShift AI 릴리스 노트의 알려진 문제 RHOAIENG-3025 를 참조하십시오.
- Deploy 를 클릭합니다.
검증
- 배포된 모델이 프로젝트의 모델 탭과 상태 열에 확인 표시를 사용하여 대시보드의 모델 Serving 페이지에 표시되는지 확인합니다.
3.11.5. 모델 스토리지에 OCI 컨테이너 사용
S3 버킷 또는 URI에 모델을 저장하는 대신 OCI 컨테이너에 모델을 업로드할 수 있습니다. 모델 스토리지에 OCI 컨테이너를 사용하면 다음과 같은 이점을 얻을 수 있습니다.
- 동일한 모델을 여러 번 다운로드하지 않도록 하여 시작 시간을 줄입니다.
- 로컬에서 다운로드한 모델 수를 줄임으로써 디스크 공간 사용량을 줄입니다.
- 사전 패치된 이미지를 허용하여 모델 성능을 개선합니다.
이 가이드에서는 OpenVINO 모델 서버의 OCI 이미지에 저장된 ONNX 형식으로 MobileNet v2-7 모델을 수동으로 배포하는 방법을 보여줍니다.
모델 스토리지에 OCI 컨테이너를 사용하는 것은 현재 Red Hat OpenShift AI 2.15에서 기술 프리뷰 기능으로 사용할 수 있습니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. Red Hat은 프로덕션 환경에서 사용하는 것을 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
사전 요구 사항
- ONNX 형식의 모델이 있습니다.
3.11.5.1. OCI 이미지 생성 및 컨테이너 이미지에 모델 저장
프로세스
로컬 시스템에서 다운로드한 모델 및 지원 파일을 모두 저장할 임시 디렉터리를 생성하여 OCI 이미지를 생성합니다.
cd $(mktemp -d)
임시 디렉터리 내에
모델
폴더를 생성하고 모델을 다운로드합니다.mkdir -p models/1 DOWNLOAD_URL=https://github.com/onnx/models/raw/main/validated/vision/classification/mobilenet/model/mobilenetv2-7.onnx curl -L $DOWNLOAD_URL -O --output-dir models/1/
참고OpenVINO에는 모델 버전 관리를 위해 번호가 지정된 하위 디렉터리가 필요하므로
1
디렉터리가 사용됩니다. OpenVINO를 사용하지 않는 경우 OCI 컨테이너 이미지를 사용하기 위해1
하위 디렉터리를 생성할 필요가 없습니다.다음 콘텐츠를 사용하여
Containerfile
이라는 Docker 파일을 생성합니다.FROM registry.access.redhat.com/ubi9/ubi-micro:latest COPY --chown=0:0 models /models RUN chmod -R a=rX /models # nobody user USER 65534
참고-
이 예에서는
ubi9-micro
가 기본 컨테이너 이미지로 사용됩니다. KServe는 쉘을 사용하지 않는 쉘을 제공하지 않는 빈 이미지를 사용할 수 없습니다. KServe는 쉘을 사용하여 모델 파일이 모델 서버에서 액세스할 수 있도록 하기 때문입니다. -
복사된 모델 파일 및 읽기 권한의 소유권은
root
그룹에 부여됩니다. OpenShift는 임의의 사용자 ID 및root
그룹 ID로 컨테이너를 실행합니다. 그룹의 소유권을 변경하면 모델 서버가 액세스할 수 있습니다.
-
이 예에서는
모델이
tree
명령을 사용하여 표시된 디렉터리 구조를 따르는지 확인합니다.tree . ├── Containerfile └── models └── 1 └── mobilenetv2-7.onnx
Podman을 사용하여 OCI 컨테이너 이미지를 생성하고 레지스트리에 업로드합니다. 예를 들어 Quay를 레지스트리로 사용합니다.
podman build --format=oci -t quay.io/<user_name>/<repository_name>:<tag_name> . podman push quay.io/<user_name>/<repository_name>:<tag_name>
참고리포지토리가 프라이빗인 경우 컨테이너 이미지를 업로드하기 전에 레지스트리에 인증되었는지 확인합니다.
3.11.5.2. 공용 리포지토리에서 OCI 이미지에 저장된 모델 배포
기본적으로 KServe에서 모델은 클러스터 외부에 노출되며 권한 부여로 보호되지 않습니다.
모델을 배포할 네임스페이스를 생성합니다.
oc new-project oci-model-example
OpenShift AI Applications 프로젝트
kserve-ovms
템플릿을 사용하여ServingRuntime
리소스를 생성하고 새 네임스페이스에서 OpenVINO 모델 서버를 구성합니다.oc process -n redhat-ods-applications -o yaml kserve-ovms | oc apply -f -
ServingRuntime
이kserve-ovms
이름으로 생성되었는지 확인합니다.oc get servingruntimes NAME DISABLED MODELTYPE CONTAINERS AGE kserve-ovms openvino_ir kserve-container 1m
다음 값을 사용하여
InferenceService
YAML 리소스를 생성합니다.apiVersion: serving.kserve.io/v1beta1 kind: InferenceService metadata: name: sample-isvc-using-oci spec: predictor: model: runtime: kserve-ovms # Ensure this matches the name of the ServingRuntime resource modelFormat: name: onnx storageUri: oci://quay.io/<user_name>/<repository_name>:<tag_name>
중요ServingRuntime
및InferenceService
구성에서는 리소스 제한을 설정하지 않습니다.
검증
InferenceService
리소스를 생성한 후 KServe는 storageUri
필드에서 참조하는 OCI 이미지에 저장된 모델을 배포합니다. 다음 명령을 사용하여 배포 상태를 확인합니다.
oc get inferenceservice NAME URL READY PREV LATEST PREVROLLEDOUTREVISION LATESTREADYREVISION AGE sample-isvc-using-oci https://sample-isvc-using-oci-oci-model-example.example True 100 sample-isvc-using-oci-predictor-00001 1m
3.11.5.3. 개인 리포지토리에서 OCI 이미지에 저장된 모델 배포
프라이빗 OCI 리포지토리에서 저장된 모델을 배포하려면 이미지 가져오기 보안을 구성해야 합니다. 이미지 가져오기 보안 생성에 대한 자세한 내용은 이미지 가져오기 보안 사용을 참조하십시오.
모델 배포를 위해 이전 섹션의 단계를 따르십시오. 그러나 3단계에서
InferenceService
를 생성할 때spec.predictor.imagePullSecrets
필드에 풀 시크릿을 지정합니다.apiVersion: serving.kserve.io/v1beta1 kind: InferenceService metadata: name: sample-isvc-using-private-oci spec: predictor: model: runtime: kserve-ovms modelFormat: name: onnx storageUri: oci://quay.io/<user_name>/<repository_name>:<tag_name> imagePullSecrets: # Specify image pull secrets to use for fetching container images (including OCI model images) - name: <pull-secret-name>