3.12. 단일 모델 제공 플랫폼을 사용하여 모델 배포


단일 모델 제공 플랫폼에서 각 모델은 자체 모델 서버에 배포됩니다. 이를 통해 증가된 리소스가 필요한 대규모 모델을 배포, 모니터링, 확장 및 유지 관리할 수 있습니다.

중요

단일 모델 제공 플랫폼을 사용하여 자체 서명된 SSL 인증서를 사용하는 S3 호환 스토리지에서 모델을 배포하려면 OpenShift 클러스터에 CA(인증 기관) 번들을 설치해야 합니다. 자세한 내용은 인증서 작업 (OpenShift AI Self-Managed) 또는 인증서 작업 (연결이 끊긴 환경에서 OpenShift AI 자체 관리)을 참조하십시오.

3.12.1. 단일 모델 제공 플랫폼 활성화

KServe를 설치하면 Red Hat OpenShift AI 대시보드를 사용하여 단일 모델 제공 플랫폼을 활성화할 수 있습니다. 대시보드를 사용하여 플랫폼의 모델 제공 런타임을 활성화할 수도 있습니다.

사전 요구 사항

  • OpenShift AI 관리자 권한이 있는 사용자로 OpenShift AI에 로그인했습니다.
  • KServe를 설치했습니다.
  • 클러스터 관리자가 KServe 구성 요소를 사용하는 단일 모델 제공 플랫폼을 선택하는 기능을 비활성화하도록 OpenShift AI 대시보드 구성을 편집 하지 않았습니다. 자세한 내용은 대시보드 구성 옵션을 참조하십시오.

프로세스

  1. 다음과 같이 플랫폼을 제공하는 단일 모델을 활성화합니다.

    1. 왼쪽 메뉴에서 설정 클러스터 설정을 클릭합니다.
    2. 모델 제공 플랫폼 섹션을 찾습니다.
    3. 프로젝트에 단일 모델 제공 플랫폼을 활성화하려면 단일 모델 제공 플랫폼 확인란을 선택합니다.
    4. 변경 사항 저장을 클릭합니다.
  2. 다음과 같이 단일 모델 제공 플랫폼에 대해 사전 설치된 런타임을 활성화합니다.

    1. OpenShift AI 대시보드의 왼쪽 메뉴에서 설정 Serving 런타임 을 클릭합니다.

      Serving 런타임 페이지에는 사전 설치된 런타임 및 사용자가 추가한 모든 사용자 지정 런타임이 표시됩니다.

      사전 설치된 런타임에 대한 자세한 내용은 지원되는 런타임 참조하십시오.

    2. 사용할 런타임을 Enabled 로 설정합니다.

      단일 모델 제공 플랫폼은 이제 모델 배포에 사용할 수 있습니다.

3.12.2. 단일 모델 제공 플랫폼에 대한 사용자 정의 모델 서비스 런타임 추가

모델 서비스 런타임은 지정된 모델 프레임워크 세트 및 해당 프레임워크에서 지원하는 모델 형식에 대한 지원을 추가합니다. OpenShift AI에 포함된 사전 설치된 런타임 을 사용할 수 있습니다. 기본 런타임이 요구 사항을 충족하지 않는 경우 자체 사용자 지정 런타임을 추가할 수도 있습니다. 예를 들어 TGIS 런타임에서 TGI(Hurgging Cryostat Generation Inference) 에서 지원하는 모델 형식을 지원하지 않는 경우 사용자 지정 런타임을 생성하여 모델에 대한 지원을 추가할 수 있습니다.

관리자는 OpenShift AI 인터페이스를 사용하여 사용자 지정 모델 제공 런타임을 추가하고 활성화할 수 있습니다. 그런 다음 단일 모델 제공 플랫폼에 모델을 배포할 때 사용자 지정 런타임을 선택할 수 있습니다.

참고

Red Hat은 사용자 지정 런타임을 지원하지 않습니다. 사용자가 추가한 모든 사용자 지정 런타임을 사용하고 올바르게 구성 및 유지 관리를 수행할 수 있는지 확인해야 합니다.

사전 요구 사항

  • OpenShift AI 관리자 권한이 있는 사용자로 OpenShift AI에 로그인했습니다.
  • 사용자 지정 런타임을 빌드하고 Quay 와 같은 컨테이너 이미지 리포지토리에 이미지를 추가했습니다.

프로세스

  1. OpenShift AI 대시보드에서 설정 > Serving 런타임 을 클릭합니다.

    Serving 런타임 페이지가 열리고 이미 설치 및 활성화된 모델 제공 런타임이 표시됩니다.

  2. 사용자 지정 런타임을 추가하려면 다음 옵션 중 하나를 선택합니다.

    • 기존 런타임(예: KServe의 경우 TGIS Standalone ServingRuntime)으로 시작하려면 기존 런타임 옆에 있는 작업 메뉴(예: TGIS Standalone ServingRuntime)를 클릭한 다음 중복 을 클릭합니다.
    • 새 사용자 지정 런타임을 추가하려면 제공 런타임 추가 를 클릭합니다.
  3. Select the model serving platforms this runtime supports list, select Single-model serving platform.
  4. Select the API protocol this runtime supports list에서 지원하는 REST 또는 gRPC 를 선택합니다.
  5. 선택 사항: 새 런타임을 시작한 경우(기존 런타임을 복제하지 않고) 다음 옵션 중 하나를 선택하여 코드를 추가합니다.

    • YAML 파일 업로드

      1. 파일 업로드 를 클릭합니다.
      2. 파일 브라우저에서 컴퓨터에서 YAML 파일을 선택합니다.

        포함된 YAML 편집기가 열리고 업로드한 파일의 내용이 표시됩니다.

    • 편집기에서 직접 YAML 코드를 입력합니다.

      1. 처음부터 시작을 클릭합니다.
      2. 포함된 편집기에서 YAML 코드를 직접 입력하거나 붙여넣습니다.
    참고

    대부분의 경우 사용자 지정 런타임을 생성하려면 ServingRuntime 사양의 env 섹션에 새 또는 사용자 지정 매개변수를 추가해야 합니다.

  6. 추가를 클릭합니다.

    Serving 런타임 페이지가 열리고 설치된 업데이트된 런타임 목록이 표시됩니다. 추가한 사용자 지정 런타임이 자동으로 활성화되어 있는지 확인합니다. 런타임을 생성할 때 지정한 API 프로토콜이 표시됩니다.

  7. 선택 사항: 사용자 지정 런타임을 편집하려면 작업 메뉴( Cryostat)를 클릭하고 편집을 선택합니다.

검증

  • 추가한 사용자 정의 모델 제공 런타임은 Serving 런타임 페이지에 활성화된 상태로 표시됩니다.

3.12.3. 단일 모델 제공 플랫폼에 대해 테스트 및 검증된 모델 제공 런타임 추가

사전 설치되어 사용자 지정 모델 제공 런타임 외에도 Red Hat 테스트 및 검증된 모델 제공 런타임(예: NVIDIA Triton Inference Server )을 사용하여 요구 사항을 지원할 수도 있습니다. Red Hat 테스트 및 검증된 런타임에 대한 자세한 내용은 Red Hat OpenShift AI에 대한 테스트 및 검증된 런타임을 참조하십시오.

Red Hat OpenShift AI 대시보드를 사용하여 단일 모델 제공 플랫폼에 대해 NVIDIA Triton 유추 서버 런타임을 추가하고 활성화할 수 있습니다. 그런 다음 단일 모델 제공 플랫폼에 모델을 배포할 때 런타임을 선택할 수 있습니다.

사전 요구 사항

  • OpenShift AI 관리자 권한이 있는 사용자로 OpenShift AI에 로그인했습니다.

프로세스

  1. OpenShift AI 대시보드에서 설정 > Serving 런타임 을 클릭합니다.

    Serving 런타임 페이지가 열리고 이미 설치 및 활성화된 모델 제공 런타임이 표시됩니다.

  2. 제공 런타임 추가를 클릭합니다.
  3. Select the model serving platforms this runtime supports list, select Single-model serving platform.
  4. Select the API protocol this runtime supports list에서 지원하는 REST 또는 gRPC 를 선택합니다.
  5. 처음부터 시작을 클릭합니다.

    1. 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@sha256:xxxxx
            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: tensorrt
            version: "8"
          - 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: triton
            version: "2"
          - autoSelect: true
            name: xgboost
            version: "1"
          - autoSelect: true
            name: python
            version: "1"
    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@sha256:xxxxx
            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: tensorrt
            version: "8"
          - 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: triton
            version: "2"
          - autoSelect: true
            name: xgboost
            version: "1"
          - autoSelect: true
            name: python
            version: "1"
      volumes:
        - emptyDir: null
          medium: Memory
          sizeLimit: 2Gi
          name: shm
  6. metadata.name 필드에서 추가하는 런타임 값이 이미 추가한 런타임 값과 일치하지 않는지 확인합니다.
  7. 선택 사항: 추가하는 런타임에 사용자 정의 표시 이름을 사용하려면 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 필드의 값이 표시됩니다.

  8. 생성을 클릭합니다.

    Serving 런타임 페이지가 열리고 설치된 업데이트된 런타임 목록이 표시됩니다. 추가한 런타임이 자동으로 활성화되어 있는지 확인합니다. 런타임을 생성할 때 지정한 API 프로토콜이 표시됩니다.

  9. 선택 사항: 런타임을 편집하려면 작업 메뉴( Cryostat)를 클릭하고 편집을 선택합니다.

검증

  • 추가한 model-serving 런타임은 Serving 런타임 페이지에 활성화된 상태로 표시됩니다.

3.12.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를 사용하는 경우 NVIDIA GPU 활성화를 참조하십시오. AMD GPU를 사용하는 경우 AMD GPU 통합을 참조하십시오.
  • vLLM 런타임을 사용하려면 OpenShift AI에서 GPU 지원을 활성화하고 클러스터에 Node Feature Discovery Operator를 설치 및 구성했습니다. 자세한 내용은 Node Feature Discovery Operator 설치NVIDIA GPU 활성화를참조하십시오.
  • KServe 런타임을 위한 Gaudi 액셀러레이터 지원과 함께 vLLM ServingRuntime 을 사용하려면 OpenShift AI에서 하이브리드 처리 단위(HPU)에 대한 지원을 활성화했습니다. 여기에는 Intel Gaudi AI 액셀러레이터 설치 및 가속기 프로파일 구성이 포함됩니다. 자세한 내용은 OpenShift용 Gaudi 설정액셀러레이터 작업을 참조하십시오.
  • KServe 런타임에 vLLM ROCm ServingRuntime 을 사용하려면 OpenShift AI에서 AMD GPU(그래픽 처리 단위)에 대한 지원을 활성화했습니다. 여기에는 AMD GPU Operator 설치 및 가속기 프로파일 구성이 포함됩니다. 자세한 내용은 OpenShift에 AMD GPU Operator 배포액셀러레이터 작업을 참조하십시오.

    참고

    OpenShift AI 2.16에서 Red Hat은 model serving을 위해 NVIDIA GPU, Intel Gaudi, AMD GPU 액셀러레이터를 지원합니다.

  • RHEL AI 모델을 배포하려면 다음을 수행합니다.

    • KServe 런타임에 vLLM ServingRuntime을 활성화했습니다.
    • Red Hat 컨테이너 레지스트리에서 모델을 다운로드하여 S3 호환 오브젝트 스토리지에 업로드했습니다.

프로세스

  1. 왼쪽 메뉴에서 Data Science Projects 를 클릭합니다.

    Data Science Projects 페이지가 열립니다.

  2. 모델을 배포할 프로젝트의 이름을 클릭합니다.

    프로젝트 세부 정보 페이지가 열립니다.

  3. 모델 탭을 클릭합니다.
  4. 다음 작업 중 하나를 수행합니다.

    • 플랫폼 타일을 제공하는 단일 모델이 표시되면 타일에 모델 배포를 클릭합니다.
    • 타일이 표시되지 않으면 모델 배포 버튼을 클릭합니다.

    모델 배포 대화 상자가 열립니다.

  5. 모델 배포 이름 필드에 배포 중인 모델의 고유 이름을 입력합니다.
  6. Serving 런타임 필드에서 활성화된 런타임을 선택합니다.
  7. 모델 프레임워크(이름 - 버전) 목록에서 값을 선택합니다.
  8. 배포할 모델 서버 복제본 수에서 값을 지정합니다.In the Number of model server replicas to deploy field, specify a value.
  9. 모델 서버 크기 목록에서 값을 선택합니다.From the Model server size list, select a value.
  10. 다음 옵션은 클러스터에서 가속기 지원을 활성화하고 가속기를 생성한 경우에만 사용할 수 있습니다.

    1. 액셀러레이터 목록에서 가속기 를 선택합니다.
    2. 이전 단계에서 가속기를 선택한 경우 수의 가속기 필드에 사용할 가속기의 수 를 지정합니다.
  11. 선택 사항: 모델 경로 섹션에서 외부 경로 확인란을 통해 사용 가능한 배포된 모델 만들기 확인란을 선택하여 배포된 모델을 외부 클라이언트에서 사용할 수 있도록 합니다.
  12. 배포된 모델에 대한 유추 요청에 대한 토큰 권한 부여가 필요한 경우 다음 작업을 수행합니다.

    1. 토큰 권한 부여 필요 를 선택합니다.
    2. 서비스 계정 이름 필드에 토큰이 생성될 서비스 계정 이름을 입력합니다.
  13. 모델의 위치를 지정하려면 다음 작업 세트 중 하나를 수행합니다.

    • 기존 연결을 사용하려면 다음을 수행합니다.

      1. 기존 연결을 선택합니다.
      2. 이름 목록에서 이전에 정의한 연결을 선택합니다.
      3. 경로 필드에서 지정된 데이터 소스에 모델이 포함된 폴더 경로를 입력합니다.

        중요

        OpenVINO 모델 서버 런타임에는 모델 경로를 지정하는 방법에 대한 특정 요구 사항이 있습니다. 자세한 내용은 OpenShift AI 릴리스 노트의 알려진 문제 RHOAIENG-3025 를 참조하십시오.

    • 새 연결 사용

      1. 모델에 액세스할 수 있는 새 연결을 정의하려면 새 연결을 선택합니다.

        1. 연결 추가 모달에서 연결 유형을 선택합니다. S3 호환 오브젝트 스토리지URI 옵션은 사전 설치된 연결 유형입니다. OpenShift AI 관리자가 이를 추가한 경우 추가 옵션을 사용할 수 있습니다.

          연결 추가 양식은 선택한 연결 유형과 관련된 필드를 사용하여 열립니다.

      2. 연결 세부 정보 필드를 작성합니다.

        중요

        연결 유형이 S3 호환 오브젝트 스토리지인 경우 데이터 파일이 포함된 폴더 경로를 제공해야 합니다. OpenVINO 모델 서버 런타임에는 모델 경로를 지정하는 방법에 대한 특정 요구 사항이 있습니다. 자세한 내용은 OpenShift AI 릴리스 노트의 알려진 문제 RHOAIENG-3025 를 참조하십시오.

  14. (선택 사항) 구성 매개변수 섹션에서 런타임 매개변수를 사용자 지정합니다.

    1. 배포된 모델의 작동 방식을 정의하도록 추가 제공 런타임 인수 의 값을 수정합니다.
    2. 추가 환경 변수 의 값을 수정하여 모델의 환경에서 변수를 정의합니다.

      구성 매개 변수 섹션에는 사용 가능한 경우 사전 정의된 제공 런타임 매개변수가 표시됩니다.

      참고

      특정 값을 설정해야 하므로, 포트 또는 모델 제공 런타임 인수를 수정하지 마십시오. 이러한 매개 변수를 덮어쓰면 배포가 실패할 수 있습니다.

  15. Deploy 를 클릭합니다.

검증

  • 배포된 모델이 프로젝트의 모델 탭과 상태 열에 확인 표시를 사용하여 대시보드의 모델 Serving 페이지에 표시되는지 확인합니다.

3.12.5. KServe에 대한 시간 제한 설정

대규모 모델을 배포하거나 KServe를 사용하여 노드 자동 스케일링을 사용하는 경우 KNative Serving 세트가 설정된 기본 progress-deadline 이 10분이므로 모델이 배포되기 전에 작업이 시간 초과될 수 있습니다.

KNative Serving을 사용하는 Pod를 배포하는 데 10분 이상 걸리면 Pod가 자동으로 실패로 표시될 수 있습니다. 이는 S3 호환 오브젝트 스토리지에서 가져오는 데 10분 이상 걸리는 대규모 모델을 배포하거나 GPU 노드의 사용을 줄이기 위해 노드 자동 스케일링을 사용하는 경우 발생할 수 있습니다.

이 문제를 해결하려면 애플리케이션에 대한 KServe InferenceService 에서 사용자 지정 progress-deadline 을 설정할 수 있습니다.

사전 요구 사항

  • OpenShift 클러스터에 대한 네임스페이스 편집 액세스 권한이 있어야 합니다.

프로세스

  1. 클러스터 관리자로 OpenShift 콘솔에 로그인합니다.
  2. 모델을 배포한 프로젝트를 선택합니다.
  3. 관리자 화면에서 검색을 클릭합니다.
  4. Resources 드롭다운 메뉴에서 InferenceService 를 검색합니다.
  5. spec.predictor.annotations 에서 새 시간 초과로 serving.knative.dev/progress-deadline 을 수정합니다.

    apiVersion: serving.kserve.io/v1alpha1
    kind: InferenceService
    metadata:
      name: my-inference-service
    spec:
      predictor:
        annotations:
          serving.knative.dev/progress-deadline: 30m
    참고

    KServe InferenceService 에서 progress-deadline 을 KNative Service 오브젝트에 다시 복사할 수 있도록 spec.predictor.annotations 수준에서 progress-deadline 을 설정해야 합니다.

3.12.6. 배포된 model-serving 런타임의 매개변수 사용자 정의

특정 모델을 배포하거나 기존 모델 배포를 개선하기 위해 기본 매개변수 이외의 추가 매개변수가 필요할 수 있습니다. 이러한 경우 기존 런타임의 매개 변수를 배포 요구에 맞게 수정할 수 있습니다.

참고

런타임의 매개 변수를 사용자 정의하면 선택한 모델 배포에만 영향을 미칩니다.

사전 요구 사항

  • OpenShift AI 관리자 권한이 있는 사용자로 OpenShift AI에 로그인했습니다.
  • 단일 모델 제공 플랫폼에 모델을 배포했습니다.

프로세스

  1. OpenShift AI 대시보드의 왼쪽 메뉴에서 Model Serving 을 클릭합니다.

    배포된 모델 페이지가 열립니다.

  2. 사용자 지정할 모델 이름 옆에 있는 작업 메뉴( Cryostat)를 클릭하고 편집을 선택합니다.

    구성 매개 변수 섹션에는 사용 가능한 경우 사전 정의된 제공 런타임 매개변수가 표시됩니다.

  3. 구성 매개변수 섹션에서 런타임 매개변수를 사용자 지정합니다.

    1. 배포된 모델의 작동 방식을 정의하도록 추가 제공 런타임 인수 의 값을 수정합니다.
    2. 추가 환경 변수 의 값을 수정하여 모델의 환경에서 변수를 정의합니다.

      참고

      특정 값을 설정해야 하므로, 포트 또는 모델 제공 런타임 인수를 수정하지 마십시오. 이러한 매개 변수를 덮어쓰면 배포가 실패할 수 있습니다.

  4. 런타임 매개변수 사용자 지정을 완료한 후 Redeploy 를 클릭하여 변경 사항을 사용하여 모델을 저장하고 배포합니다.

검증

  • 배포된 모델이 프로젝트의 모델 탭과 상태 열에 확인 표시를 사용하여 대시보드의 모델 Serving 페이지에 표시되는지 확인합니다.
  • 설정한 인수 및 변수가 다음 방법 중 하나로 spec.predictor.model.argsspec.predictor.model.env 에 표시되는지 확인합니다.

    • OpenShift 콘솔에서 InferenceService YAML 확인.
    • OpenShift CLI에서 다음 명령을 사용합니다.

      oc get -o json inferenceservice <inferenceservicename/modelname> -n <projectname>

3.12.7. 사용자 지정 가능한 모델 제공 런타임 매개변수

기존 모델 서비스 런타임의 매개 변수를 배포 요구 사항에 맞게 수정할 수 있습니다.

지원되는 각 제공 런타임의 매개변수에 대한 자세한 내용은 다음 표를 참조하십시오.

런타임 제공리소스

NVIDIA Triton Inference Server

NVIDIA Triton Inference Server: 모델 매개변수

KServe의 Cainitiatort text Generation Inference Server (Caikit-TGIS) ServingRuntime

Ca#159t NLP: 구성
TGIS: 모델 구성

KServe 용 카피네트 Standalone ServingRuntime

Ca#159t NLP: 구성

OpenVino Model Server

OpenVino Model Server 기능: 동적 입력 매개변수

KServe용 텍스트 생성 유추 서버(TGIS) Standalone ServingRuntime

TGIS: 모델 구성

KServe의 vLLM ServingRuntime

vLLM: Engine 인수
OpenAI 호환 서버

3.12.8. 모델 스토리지에 OCI 컨테이너 사용

S3 버킷 또는 URI에 모델을 저장하는 대신 OCI(Open Container Initiative) 컨테이너에 모델을 업로드할 수 있습니다. 모델 스토리지에 OCI 컨테이너를 사용하면 다음과 같은 이점을 얻을 수 있습니다.

  • 동일한 모델을 여러 번 다운로드하지 않도록 하여 시작 시간을 줄입니다.
  • 로컬에서 다운로드한 모델 수를 줄임으로써 디스크 공간 사용량을 줄입니다.
  • 사전 패치된 이미지를 허용하여 모델 성능을 개선합니다.

모델 스토리지에 OCI 컨테이너를 사용하려면 다음 작업이 포함됩니다.

  • OCI 이미지에 모델 저장
  • OCI 이미지에서 모델 배포
중요

모델 스토리지에 OCI 컨테이너를 사용하는 것은 현재 Red Hat OpenShift AI 2.16에서 기술 프리뷰 기능으로 사용할 수 있습니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. Red Hat은 프로덕션 환경에서 사용하는 것을 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

3.12.8.1. OCI 이미지에 모델 저장

OCI 이미지에 모델을 저장할 수 있습니다. 다음 절차에서는 ONNX 형식으로 MobileNet v2-7 모델을 저장하는 예제를 사용합니다.

사전 요구 사항

  • ONNX 형식의 모델이 있습니다. 이 절차의 예제에서는 ONNX 형식의 MobileNet v2-7 모델을 사용합니다.
  • Podman 툴을 설치했습니다.

프로세스

  1. 로컬 시스템의 터미널 창에서 OCI 이미지를 생성하는 데 필요한 모델 및 지원 파일을 모두 저장할 임시 디렉터리를 생성합니다.

    cd $(mktemp -d)
  2. 임시 디렉터리 내에 models 폴더를 생성합니다.

    mkdir -p models/1
    참고

    이 예제 명령은 OpenVINO 모델 버전 관리를 위해 번호가 지정된 하위 디렉터리가 필요하므로 1 디렉터리를 지정합니다. OpenVINO를 사용하지 않는 경우 OCI 컨테이너 이미지를 사용하기 위해 1 하위 디렉터리를 생성할 필요가 없습니다.

  3. 모델 및 지원 파일을 다운로드합니다.

    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/
  4. 트리 명령을 사용하여 모델 파일이 예상대로 디렉터리 구조에 있는지 확인합니다.

    tree

    tree 명령은 다음 예와 유사한 디렉터리 구조를 반환해야 합니다.

    .
    ├── Containerfile
    └── models
        └── 1
            └── mobilenetv2-7.onnx
  5. Containerfile 이라는 Docker 파일을 생성합니다.

    참고
    • 쉘을 제공하는 기본 이미지를 지정합니다. 다음 예에서 ubi9-micro 는 기본 컨테이너 이미지입니다. KServe는 쉘을 사용하지 않는 쉘을 제공하지 않는 빈 이미지를 지정할 수 없습니다. KServe는 쉘을 사용하여 모델 서버에 액세스할 수 있도록 하기 때문입니다.
    • 복사된 모델 파일의 소유권을 변경하고 루트 그룹에 읽기 권한을 부여하여 모델 서버가 파일에 액세스할 수 있는지 확인합니다. OpenShift는 임의의 사용자 ID 및 root 그룹 ID로 컨테이너를 실행합니다.
    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
  6. podman build 명령을 사용하여 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.12.8.2. OCI 이미지에 저장된 모델 배포

OCI 이미지에 저장된 모델을 배포할 수 있습니다.

다음 절차에서는 OpenVINO 모델 서버의 OCI 이미지에 저장된 ONNX 형식으로 MobileNet v2-7 모델을 배포하는 예제를 사용합니다.

참고

기본적으로 KServe에서 모델은 클러스터 외부에 노출되며 권한 부여로 보호되지 않습니다.

사전 요구 사항

프로세스

  1. 모델을 배포할 프로젝트를 생성합니다.

    oc new-project oci-model-example
  2. OpenShift AI Applications 프로젝트 kserve-ovms 템플릿을 사용하여 ServingRuntime 리소스를 생성하고 새 프로젝트에서 OpenVINO 모델 서버를 구성합니다.

    oc process -n redhat-ods-applications -o yaml kserve-ovms | oc apply -f -
  3. kserve-ovms 라는 ServingRuntime 이 생성되었는지 확인합니다.

    oc get servingruntimes

    명령은 다음과 유사한 출력을 반환해야 합니다.

    NAME          DISABLED   MODELTYPE     CONTAINERS         AGE
    kserve-ovms              openvino_ir   kserve-container   1m
  4. 모델이 개인 또는 공용 OCI 리포지토리에서 저장되는지 여부에 따라 InferenceService YAML 리소스를 생성합니다.

    • 공용 OCI 리포지토리에 저장된 모델의 경우 InferenceService YAML 파일을 다음 값으로 생성하여 < user_name> , < repository_name > , < tag_name >을 해당 환경과 관련된 값으로 바꿉니다.

      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>
            resources:
              requests:
                memory: 500Mi
                cpu: 100m
                # nvidia.com/gpu: "1" # Only required if you have GPUs available and the model and runtime will use it
              limits:
                memory: 4Gi
                cpu: 500m
                # nvidia.com/gpu: "1" # Only required if you have GPUs available and the model and runtime will use it
    • 프라이빗 OCI 리포지토리에 저장된 모델의 경우 다음 예와 같이 spec.predictor.imagePullSecrets 필드에 가져오기 보안을 지정하는 InferenceService YAML 파일을 생성합니다.

      apiVersion: serving.kserve.io/v1beta1
      kind: InferenceService
      metadata:
        name: sample-isvc-using-private-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>
            resources:
              requests:
                memory: 500Mi
                cpu: 100m
                # nvidia.com/gpu: "1" # Only required if you have GPUs available and the model and runtime will use it
              limits:
                memory: 4Gi
                cpu: 500m
                # nvidia.com/gpu: "1" # Only required if you have GPUs available and the model and runtime will use it
          imagePullSecrets: # Specify image pull secrets to use for fetching container images, including OCI model images
          - name: <pull-secret-name>

      InferenceService 리소스를 생성한 후 KServe는 storageUri 필드에서 참조하는 OCI 이미지에 저장된 모델을 배포합니다.

검증

배포 상태를 확인합니다.

oc get inferenceservice

명령은 배포된 모델의 URL 및 준비 상태 등 정보가 포함된 출력을 반환해야 합니다.

3.12.9. vLLM에서 가속기 사용

OpenShift AI는 NVIDIA, AMD 및 Intel Gaudi 액셀러레이터를 지원합니다. OpenShift AI에는 가속기를 지원하는 사전 설치된 모델 제공 런타임도 포함되어 있습니다.

3.12.9.1. NVIDIA GPU

KServe 런타임용 vLLM ServingRuntime 을 사용하여 NVIDIA 그래픽 처리 장치(GPU)로 모델을 제공할 수 있습니다. 런타임을 사용하려면 OpenShift AI에서 GPU 지원을 활성화해야 합니다. 여기에는 클러스터에 Node Feature Discovery Operator 설치 및 구성이 포함됩니다. 자세한 내용은 Node Feature Discovery Operator 설치NVIDIA GPU 활성화를 참조하십시오.

3.12.9.2. Intel Gaudi 액셀러레이터

KServe 런타임을 Gaudi 액셀러레이터와 함께 vLLM ServingRuntime을 사용하여 Intel Gaudi 액셀러레이터로 모델을 제공할 수 있습니다. 런타임을 사용하려면 OpenShift AI에서 하이브리드 처리 지원(HPU) 지원을 활성화해야 합니다. 여기에는 Intel Gaudi AI 액셀러레이터 설치 및 가속기 프로파일 구성이 포함됩니다. 자세한 내용은 OpenShift용 Gaudi 설정액셀러레이터 프로필 작업을 참조하십시오.

권장 vLLM 매개변수, 환경 변수, 지원되는 구성 등에 대한 자세한 내용은 Intel® Gaudi® AI Accelerators의 vLLM 을 참조하십시오.

3.12.9.3. AMD GPU

KServe 런타임용 vLLM ROCm ServingRuntime 을 사용하여 AMD GPU가 있는 모델을 제공할 수 있습니다. 런타임을 사용하려면 OpenShift AI에서 AMD GPU(그래픽 처리 단위)에 대한 지원을 활성화해야 합니다. 여기에는 AMD GPU Operator 설치 및 가속기 프로파일 구성이 포함됩니다. 자세한 내용은 OpenShift에 AMD GPU Operator 배포액셀러레이터 프로필 작업을 참조하십시오.

3.12.10. vLLM 모델 사용자 지정-serving 런타임

경우에 따라 KServe 런타임의 vLLM ServingRuntime 에 추가 플래그 또는 환경 변수를 추가하여 Cryostat 제품군을 배포해야 할 수 있습니다.

다음 절차에서는 L declarationa, Granite 또는 Mistral 모델을 배포하도록 vLLM 모델 사용자 지정을 설명합니다.

사전 요구 사항

  • OpenShift AI 관리자 권한이 있는 사용자로 OpenShift AI에 로그인했습니다.
  • Llana 모델 배포를 위해 메타-일마-3 모델을 오브젝트 스토리지에 다운로드했습니다.
  • Granite 모델 배포를 위해 granite-7b-instruct 또는 granite-20B-code-instruct 모델을 오브젝트 스토리지에 다운로드했습니다.
  • Mistral 모델 배포를 위해 mistral-7B-Instruct-v0.3 모델을 오브젝트 스토리지에 다운로드했습니다.
  • KServe 런타임에 vLLM ServingRuntime을 활성화했습니다.
  • OpenShift AI에서 GPU 지원을 활성화하고 클러스터에 Node Feature Discovery Operator를 설치 및 구성했습니다. 자세한 내용은 Node Feature Discovery Operator 설치NVIDIA GPU 활성화를참조하십시오.

프로세스

  1. 단계에 따라 단일 모델 제공 플랫폼에서 모델 배포에 설명된 대로 모델을 배포합니다.
  2. Serving 런타임 필드에서 KServe에 대해 vLLM ServingRuntime을 선택합니다.
  3. meta-llama-3 모델을 배포하는 경우 구성 매개변수 섹션에서 추가 제공 런타임 인수 아래에 다음 인수를 추가합니다.

    –-distributed-executor-backend=mp 1
    --max-model-len=6144 2
    1
    분산 모델 작업자의 다중 처리로 백엔드를 설정합니다.
    2
    모델의 최대 컨텍스트 길이를 6144 토큰으로 설정합니다.
  4. granite-7B-instruct 모델을 배포하는 경우 구성 매개변수 섹션에서 추가 제공 런타임 인수 아래에 다음 인수를 추가합니다.

    --distributed-executor-backend=mp 1
    1
    분산 모델 작업자의 다중 처리로 백엔드를 설정합니다.
  5. granite-20B-code-instruct 모델을 배포하는 경우 구성 매개변수 섹션에서 추가 제공 런타임 인수 아래에 다음 인수를 추가합니다.

    --distributed-executor-backend=mp 1
    –-tensor-parallel-size=4 2
    --max-model-len=6448 3
    1
    분산 모델 작업자의 다중 처리로 백엔드를 설정합니다.
    2
    단일 노드의 4 GPU에 추론 배포
    3
    모델의 최대 컨텍스트 길이를 6448 토큰으로 설정합니다.
  6. mistral-7B-Instruct-v0.3 모델을 배포하는 경우 구성 매개변수 섹션에서 추가 제공 런타임 인수 아래에 다음 인수를 추가합니다.

    --distributed-executor-backend=mp 1
    --max-model-len=15344 2
    1
    분산 모델 작업자의 다중 처리로 백엔드를 설정합니다.
    2
    모델의 최대 컨텍스트 길이를 15344 토큰으로 설정합니다.
  7. Deploy 를 클릭합니다.

검증

  • 배포된 모델이 프로젝트의 모델 탭과 상태 열에 확인 표시를 사용하여 대시보드의 모델 Serving 페이지에 표시되는지 확인합니다.
  • granite 모델의 경우 다음 예제 명령을 사용하여 배포된 모델에 대한 API 요청을 확인합니다.

    curl -q -X 'POST' \
        "https://<inference_endpoint_url>:443/v1/chat/completions" \
        -H 'accept: application/json' \
        -H 'Content-Type: application/json' \
        -d "{
        \"model\": \"<model_name>\",
        \"prompt\": \"<prompt>",
        \"max_tokens\": <max_tokens>,
        \"temperature\": <temperature>
        }"

추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.