AI-ML

쉽고 편리하게 ML/DL(Machine Learning/Deep Learning) 모델 개발 및 학습 환경을 구축할 수 있는 AI/ML 서비스를 제공합니다.

1 - Simple AI Inference

1.1 - Overview

서비스 개요

Simple AI Inference는 다양한 글로벌 파운데이션 모델을 API 형태로 제공하는 Serverless 서비스로써 LLM을 Samsung Cloud Platform 내부 자원이나 외부에서 사용할 수 있도록 Public 또는 Private 환경을 제공합니다.
Simple AI Inference를 이용하면 동일 API를 통해 여러 LLM 모델을 사용하고 AI 애플리케이션 서비스 개발 생산성을 향상시킬 수 있습니다. 또한 OpenAI 및 LangChain SDK와 호환성을 지원하여 기존 개발 환경 및 프레임워크에 손쉽게 연동할 수 있습니다.

특장점

  • 편리한 LLM 모델 사용: Serverless 형태의 완전 관리형 서비스로써 동일 API를 통해 여러 LLM 모델을 사용할 수 있습니다.
  • 효율적인 비용관리: 입력(Input) 및 출력(Output) 토큰의 실제 사용량을 기준으로 비용이 과금됩니다.
  • 안정적인 서비스 제공: 트래픽 컨트롤(TPM/RTM)을 통하여 안정적인 서비스를 제공합니다.
  • 기업용 보안 제공: 데이터는 철저한 보안 환경에서 안전하게 보호되며 외부 모델 학습에 사용되지 않습니다.

서비스 구성도

구성도
그림. Simple AI Inference 구성도

제공 기능

Simple AI Inference는 다음과 같은 기능을 제공하고 있습니다.

  • 편리한 LLM 모델 확인

    • LLM 모델 카탈로그를 통해 제공되는 LLM 모델의 특징 및 주요 활용처들을 쉽게 확인할 수 있습니다.
    • PlayGround를 이용하여 제공되는 LLM 모델을 콘솔 화면에서 바로 확인하고 테스트할 수 있습니다.
      참고
      PlayGround는 2026년 9월 이후 제공될 예정입니다.
  • LLM 모델의 Account 공동 사용: Simple AI Inference에서 사용할 모델을 신청하면 동일 Account 내의 모든 사용자가 사용할 수 있습니다.

  • Serverless 서비스 제공 : 사용자는 자원의 관리 없이 API를 통해 원하는 모델을 요청하여 바로 사용할 수 있으며 사용한 만큼 비용을 지불하게 됩니다.

  • Public/Private 엔드 포인트 제공: 사용자의 추론 사용 형태에 따라 Public 또는 Private 엔드 포인트를 선택하여 사용할 수 있습니다.

  • 안정적인 서비스 제공: 트래픽 컨트롤(TPM/RPM)을 통해 안정적인 서비스 환경을 제공합니다.

제공 모델

Simple AI Inference에서 제공하는 LLM 모델은 다음과 같습니다.

모델명활용처입력 타입TPMRPMContext Size이미지 입력 제한 수
Qwen3.6-27BText, AgentText, Image1,000,000100262,1448
gemma-4-31B-itText, AgentText, Image1,000,000100262,1448
gpt-oss-120bTextText1,000,000100131,072-
Llama-Guard-4-12BSecurityText, Image1,000,000250307,2008
Qwen3-VL-Embedding-8BembeddingText, Image1,000,000250262,1448
Qwen3-VL-Reranker-8BrerankerText, Image1,000,000250262,1448
표. Simple AI Inference 제공 LLM 모델

주의
Simple AI Inference 서비스에서 제공하는 모델은 인공지능 모델이 학습된 데이터를 바탕으로 자체 생성한 결과물입니다. 따라서 모델이 생성한 답변 내용, 의견, 가치관 및 판단은 Samsung Cloud Platform의 공식 입장이나 의도와는 완전히 무관합니다. 또한 AI 모델의 특성상 왜곡된 정보나 오류가 포함된 답변(환각 현상)이 발생할 수 있으므로, 중요한 의사결정 시에는 반드시 사실 관계를 별도로 확인하시기 바랍니다.

리전별 제공 현황

Simple AI Inference 서비스를 제공하는 리전은 다음과 같습니다.

리전제공 여부
한국 서부(kr-west1)제공
한국 동부(kr-east1)미제공
한국 남부1(kr-south1)미제공
한국 남부2(kr-south2)미제공
한국 남부3(kr-south3)미제공
표. Simple AI Inference 리전별 제공 현황

선행 서비스

해당 서비스를 생성하기 전에 미리 구성되어 있어야 하는 서비스는 없습니다.

1.1.1 - ServiceWatch 지표

Simple AI Inference은 ServiceWatch로 지표를 전송합니다. 기본 모니터링으로 제공되는 지표는 5분 주기로 수집된 데이터입니다.

참고
ServiceWatch에서 지표를 확인하는 방법은 ServiceWatch 가이드를 참고하세요.

기본 지표

다음은 네임스페이스 Simple AI Inference에 대한 기본 지표입니다.
아래에서 지표명이 굵은 글씨로 표기된 지표는 Simple AI Inference에서 제공하는 기본 지표 중 주요 지표로 선정한 지표입니다.
주요 지표는 ServiceWatch에서 서비스별로 자동으로 구축되는 서비스 대시보드를 구성하는데 활용됩니다.
각 지표는 해당 지표를 조회할 때 어떤 통계값으로 조회하는 것이 의미있는지 의미 있는 통계값을 사용자 가이드를 통해 안내하고 있으며, 의미있는 통계 중에서 굵은 글씨로 표기된 통계값이 주요 통계값입니다.

서비스 대시보드 또는 모니터링 탭에서는 주요 지표를 주요 통계값을 통해 조회할수 있습니다. 또는 Simple AI Inference 상세 페이지의 모니터링 탭에서도 주요 지표에 대해 확인할 수 있습니다.
ServiceWatch의 지표 메뉴에서 GPU Device별 사용률도 확인할 수 있습니다.

성능 항목(지표명)상세 설명단위의미있는 통계
Model Total Tokens모델 토큰 사용량(전체)Count
  • 합계
Model Request Server Error모델 요청 실패 횟수(서버 오류)Count
  • 합계
Model Input Tokens모델 토큰 사용량(입력, 캐시된 토큰 포함)Count
  • 합계
Model Request Throttled모델 요청 제한 횟수(요청 한도 초과)Count
  • 합계
Model Request Client Error모델 요청 실패 횟수(클라이언트 오류)Count
  • 합계
Model Output Tokens모델 토큰 사용량(출력)Count
  • 합계
Model Cached Tokens모델 토큰 사용량(캐시)Count
  • 합계
Model Request Prompt Rejected모델 요청 거부 횟수(프롬프트 검수)Count
  • 합계
Model Request Success모델 요청 성공 횟수Count
  • 합계
표. Simple AI Inference 기본 지표

1.2 - How-to Guides

Simple AI Inference 생성하기

Simple AI Inference를 이용하려면 먼저 Inference를 생성해야 합니다. Inference를 생성하려면 다음 절차를 따르세요.

  1. 모든 서비스 > AI-ML > Simple AI Inference 메뉴를 클릭하세요. Simple AI Inference의 Service Home 페이지로 이동합니다.

  2. Service Home 페이지에서 Simple AI Inference 생성 버튼을 클릭하세요. Serverless Inference 생성 페이지로 이동합니다.

  3. Serverless Inference 생성 페이지에서 서비스 생성에 필요한 정보들을 입력하고, 상세 옵션을 선택하세요.

    • 서비스 정보 입력 영역에서 서비스 생성에 필요한 옵션을 선택하세요.
      구분
      필수 여부
      상세 설명
      Inference 서비스명필수Serverless Inference 서비스명 입력
      • 영문 소문자와 숫자를 사용해 3 ~ 25자로 입력
      엔드포인트필수Simple AI Inference에 대한 외부 엑세스를 선택
      • 프라이빗: 프라이빗 엔드포인트 접근 제어만 사용
      • 프라이빗&퍼블릭: 프라이빗과 퍼블릭 엔드포인트 접근 제어 모두 사용
      프라이빗 엔드 포인트 접근 제어선택Samsung Cloud Platform내 리소스를 추가하여 해당 리소스의 접근만 허용
      • 프라이빗 접근 허용 리소스: 접근을 허용할 리소스를 선택
        • 추가 버튼을 클릭하여 접근을 허용할 리소스 선택 가능
        • 리소스 목록에서 삭제할 리소스를 선택한 후, 삭제 버튼을 클릭하여 삭제 가능
      • 리소스를 추가하지 않을 경우, 동일 리전에 포함된 모든 서브넷 상의 리소스에 대한 접근을 허용
      • Serverless 엔드 포인트 신청 후 수정 가능
      퍼블릭 엔드 포인트 접근 제어선택퍼블릭 엔드 포인트 접근 제어의 사용 여부를 설정
      • 사용으로 설정할 경우, 접근을 허용할 IP 또는 리소스 추가 가능
        • 퍼블릭 접근 허용 IP: 접근을 허용할 IP 대역을 CIDR 형식 또는 IP 주소로 입력한 후, 추가 버튼을 클릭하여 추가 가능
        • 최대 100개까지 추가 가능
      • 사용하지 않을 경우, 모든 IP에 대한 접근을 허용
      • Serverless 엔드 포인트 신청 후 수정 가능
      표. Serverless Inference 서비스 정보 입력 항목
      주의
      퍼블릭 엔드 포인트 접근 제어를 사용하지 않거나 전체 IP 범위(Any, 0.0.0.0/0)로 설정할 경우, 레지스트리가 외부 스캔 및 해킹 등의 보안 공격에 노출될 수 있습니다.
    • 추가 정보 입력 영역에서 필요한 정보를 입력 또는 선택하세요.
      구분
      필수 여부
      상세 설명
      태그선택태그 추가
      • 자원 당 최대 50개까지 추가 가능
      • 태그 추가 버튼을 클릭한 후 Key, Value 값을 입력 또는 선택
      표. Serverless Inference 추가 정보 입력 항목
  4. 요약 패널에서 생성한 상세 정보와 예상 청구 금액을 확인하고, 생성 버튼을 클릭하세요.

  5. 생성을 알리는 팝업창이 열리면 확인 버튼을 클릭하세요. 생성 신청이 완료됩니다.

    • 생성이 완료되면, Serverless Inference 목록 페이지에서 생성한 내용을 확인하세요.

LLM 모델별 사용량 확인하기

Simple AI Inference의 Service Home 페이지에서 LLM 목록과 모델별 Token 사용량을 확인할 수 있습니다.

  1. 모든 서비스 > AI-ML > Simple AI Inference 메뉴를 클릭하세요. Simple AI Inference의 Service Home 페이지로 이동합니다.
  2. Service Home 페이지의 대시보드에서 LLM 모델별 사용량 목록에서 LLM의 모델별 사용량을 확인하세요.
    구분상세 설명
    모델명LLM 이름
    • 이름을 클릭하면 해당 모델의 상세 페이지 내 Report 탭으로 이동
    모델 타입LLM 타입
    사용 토큰량(1 Week)현재일 기준으로 1주일간 사용한 토큰량
    표. Simple AI Inference LLM 모델별 사용량 항목

Serverless Inference 상세 정보 확인하기

Serverless Inference의 상세 정보를 확인하려면 다음 절차를 따르세요.

  1. 모든 서비스 > AI-ML > Simple AI Inference 메뉴를 클릭하세요. Simple AI Inference의 Service Home 페이지로 이동합니다.
  2. Service Home 페이지에서 Serverless Inference 메뉴를 클릭하세요. Serverless Inference 목록 페이지로 이동합니다.
    항목설명
    서비스 생성Serverless Inference 생성 가능
    • 버튼 클릭 시 Serverless Inference 생성 페이지로 이동
    Inference 서비스명Serverless Inference 이름
    모델 ID모델 ID값
    • 모델 ID 클릭 시 해당 모델의 상세 페이지로 이동
    모델명모델 이름
    • 모델 ID 클릭 시 해당 모델의 상세 페이지로 이동
    모델 종료 예정 일자모델의 제공 종료 예정 일자
    지연 시간평균 응답 시간
    처리량모델이 1초당 평균적으로 생성하는 토큰 수
    서비스 해지Serverless Inference 해지 가능
    • 버튼 클릭 시 Serverless Inference 해지 페이지로 이동
    표. Serverless Inference 목록 정보
    참고
    모델 ID 또는 모델명을 클릭하면 모델 카탈로그의 모델 상세 정보 페이지로 이동하여 모델의 상세정보를 확인할 수 있습니다.
  1. Serverless Inference 목록 페이지에서 상세정보를 확인할 Inference 서비스명을 클릭하세요. Serverless Inference 상세 페이지로 이동합니다.
    • Serverless Inference 상세 페이지는 상세정보, Report, 태그, 작업 이력 탭으로 구성되어 있습니다.

상세 정보

Serverless Inference 목록 페이지에서 선택한 자원의 상세 정보를 확인하고, 필요한 경우 정보를 수정할 수 있습니다.

구분상세 설명
서비스서비스명
자원 유형자원 유형
SRNSamsung Cloud Platform에서의 고유 자원 ID
자원명자원 이름
자원 ID서비스에서의 고유 자원 ID
생성자서비스를 생성한 사용자
생성 일시서비스를 생성한 일시
수정자서비스 정보를 수정한 사용자
수정 일시서비스 정보를 수정한 일시
엔드포인트Simple AI Inference에 대한 외부 엑세스 방식
  • 프라이빗: 프라이빗 엔드포인트 접근 제어만 사용
  • 프라이빗&퍼블릭: 프라이빗과 퍼블릭 엔드포인트 접근 제어 모두 사용
  • 수정 버튼을 클릭하여 엑세스 방식 변경 가능
프라이빗 엔드포인트프라이빗 엔드포인트값
  • 복사 버튼을 클릭하여 엔드포인트값 복사 가능
퍼블릭 엔드포인트퍼블릭 엔드포인트값
  • 복사 버튼을 클릭하여 엔드포인트값 복사 가능
프라이빗 엔드포인트 접근 제어프라이빗 접근이 허용된 리소스 정보
  • 수정 버튼을 클릭하여 리소스 추가 또는 삭제 가능
퍼블릭 엔드포인트 접근 제어퍼블릭 접근이 허용된 IP 및 리소스 정보
  • 수정 버튼을 클릭하여 IP 및 리소스 추가 또는 삭제 가능
표. 상세정보 탭 항목

Report

Serverless Inference 목록 페이지에서 선택한 자원의 일자별 LLM 호출 횟수와 토큰 사용량을 확인할 수 있습니다.

구분상세 설명
검색 필터Report를 확인할 항목 선택
  • 서비스 유형:전체, Virtual Server, GPU Server, Kubernetes Engine 중 선택
  • 서비스/리소스ID: 서비스 또는 리소스 ID 선택
    • 서비스 유형을 선택하지 않으면 전체만 선택 가능
    • 서비스 유형에서 특정 서비스를 선택한 경우, 해당 서비스의 서비스 및 리소스 ID 선택 가능
  • Model:제공 모델 중 선택
  • 조회 기간: Report를 확인할 기간 선택
    • 일주일 단위로 선택 가능
    • 최대 3개월 이전 날짜까지 선택 가능
    • 조회하는 데이터는 현재시간 기준 최대 30분 전까지의 데이터를 기준으로 제공
호출 횟수조회 기간 동안 호출 횟수를 그래프로 표시
전체 호출 횟수조회 기간 동안 호출 횟수를 모델별로 제공
Token 사용량조회 기간 동안 Input 및 Output Token 사용량을 그래프로 표시
전체 Token 수조회 기간 동안 전체 Token 사용량을 Input 및 Output으로 구분하여 표시
Request 당 평균 Token 수조회 기간 동안 LLM 호출 시 사용한 평균 Token량을 Input 및 Output으로 구분하여 표시
표. Report 탭 항목

태그

Serverless Inference 목록 페이지에서 선택한 자원의 태그 정보를 확인하고, 추가하거나 변경 또는 삭제할 수 있습니다.

구분상세 설명
태그 목록태그 목록
  • 태그의 Key, Value 정보 확인 가능
  • 태그는 자원 당 최대 50개까지 추가 가능
  • 태그 입력 시 기존에 생성된 Key와 Value 목록을 검색하여 선택
표. 태그 탭 항목

작업 이력

Serverless Inference 목록 페이지에서 선택한 자원의 작업 이력을 확인할 수 있습니다.

구분상세 설명
작업 이력 목록자원 변경 이력
  • 작업 일시, 자원 유형, 자원명, 작업 내역, 작업 결과, 작업자명, 경로 정보 확인이 가능
  • 상세 검색을 하려면 상세 검색 버튼을 클릭
표. 작업 이력 탭 항목

모델 상세 정보 확인하기

Simple AI Inference에서 제공하는 모델과 모델의 상세 정보를 확인할 수 있습니다.
모델 상세 정보를 확인하려면 다음 절차를 따르세요.

  1. 모든 서비스 > AI-ML > Simple AI Inference 메뉴를 클릭하세요. Simple AI Inference의 Service Home 페이지로 이동합니다.
  2. Service Home 페이지에서 모델 카탈로그 메뉴를 클릭하세요. 모델 카탈로그 페이지로 이동합니다.
  3. 모델 카탈로그 페이지에서 상세 정보를 확인할 모델을 클릭하세요. 모델 카탈로그 상세 페이지로 이동합니다.
    항목설명
    라이선스버튼을 클릭하여 모델의 라이선스 내용 확인 가능
    개요모델에 대한 기본 설명
    판매 기준모델 개발사
    범주모델 활용 범위
    마지막 버전제공 버전
    출시 날짜모델 출시년도 및 일자
    모델 ID모델 ID 정보
    최대 토큰토큰 최대 크기
    Output modelities모델 출력 방식
    Input modelities모델 입력 방식
    언어모델 언어 종류
    배포 유형모델 배포 방식
    Token Limits토큰 제한값
    Reqeust Limits요청 제한값
    표. Simple AI Inference 제공 모델 상세 정보

API 키 관리하기

Simple AI Inference를 Severless Inference에서 이용할 API Key를 생성하고 등록해야 합니다.

API 키 생성하기

API 키를 생성하려면 다음 절차를 따르세요.

  1. 모든 서비스 > AI-ML > Simple AI Inference 메뉴를 클릭하세요. Simple AI Inference의 Service Home 페이지로 이동합니다.

  2. Service Home 페이지에서 API 키 메뉴를 클릭하세요. API 키 목록 페이지로 이동합니다.

  3. API 키 목록 페이지에서 키 생성 버튼을 모델을 클릭하세요. API Key 생성 상세 페이지로 이동합니다.

  4. API 키 생성 페이지에서 API 키를 생성하기 위한 정보를 입력한 후, 생성 버튼을 클릭하세요.

    구분
    필수 여부
    상세 설명
    Inference 유형필수Inference 유형을 선택
    만료 기간필수API 키의 만료 기간을 입력
    • 영구 항목을 체크하면 기간 제한 없이 사용 가능
    사용 용도선택API 키의 사용 용도를 128자 이내로 입력
    표. Serverless Inference 서비스 정보 입력 항목
    주의
    퍼블릭 엔드 포인트 접근 제어를 사용하지 않거나 전체 IP 범위(Any, 0.0.0.0/0)로 설정할 경우, 레지스트리가 외부 스캔 및 해킹 등의 보안 공격에 노출될 수 있습니다.

  5. API 키 생성을 알리는 팝업창이 열리면 확인 버튼을 클릭하세요.

    • API 키 생성 시 생성 시점에 최초 1회 다운로드됩니다.
참고
API 키는 생성 시점에 최초 한 번만 다운로드할 수 있으며 사용자별로 최대 2개까지 생성할 수 있습니다.

API 키 확인하기

API 키를 확인하려면 다음 절차를 따르세요.

  1. 모든 서비스 > AI-ML > Simple AI Inference 메뉴를 클릭하세요. Simple AI Inference의 Service Home 페이지로 이동합니다.
  2. Service Home 페이지에서 API 키 메뉴를 클릭하세요. API 키 목록 페이지로 이동합니다.
    항목설명
    인증키인증키 정보
    Inference 유형인증키를 등록한 Inference 유형
    생성 일시인증키 생성 일시
    만료 일시인증키 만료 일시
    삭제선택한 API 키를 삭제
    • API 키는 비활성화 상태에서만 삭제 가능
    • 삭제된 API 키는 복구 불가
    더보기선택한 API 키의 활성화/비활성화 상태 변경
    • 사용: 비활성화된 인증키를 활성화
    • 사용 중지: 활성화된 인증키를 비활성화
    키 생성API 키를 생성
    • 버튼 클릭 시 API 키 생성 페이지로 이동
    표. Simple AI Inference 제공 모델 상세 정보
참고
  • API 키는 생성 시 활성화 상태로 생성됩니다.
  • API 키 노출이 의심되는 경우에는 사용 중지를 통해 API 키를 비활성화하여 API 호출을 즉시 차단하세요. 이후, API 키의 안정성이 확인되면 사용으로 키를 다시 활성화하여 사용할 수 있습니다.

API 키 상태 변경하기

API 키의 상태를 활성화 또는 비활성화할 수 있습니다.
API 키의 상태를 변경하려면 다음 절차를 따르세요.

  1. 모든 서비스 > AI-ML > Simple AI Inference 메뉴를 클릭하세요. Simple AI Inference의 Service Home 페이지로 이동합니다.
  2. Service Home 페이지에서 API 키 메뉴를 클릭하세요. API 키 목록 페이지로 이동합니다.
  3. API 키 목록 페이지에서 상태를 변경할 API 키를 모두 선택하세요.
  4. 목록 상단의 더보기 버튼을 클릭한 후, 사용 또는 사용 중지 버튼을 클릭하세요.
    • API 키가 사용 상태인 경우: 사용 버튼을 클릭하여 활성화 가능
    • API 키가 사용 중지 상태인 경우: 사용 중지 버튼을 클릭하여 비활성화 가능
  5. 상태 변경을 알리는 팝업창이 열리면 확인 버튼을 클릭하세요.

API 키 삭제하기

API 키를 삭제하려면 다음 절차를 따르세요.

주의
  • API 키는 비활성화 상태에서만 삭제할 수 있습니다.
  • 삭제된 API 키는 복구할 수 없으며, 해당 키를 이용한 API 호출은 영구적으로 사용할 수 없습니다.
  • API 키를 다시 사용하려면 새로운 API 키를 생성해야 합니다.
  1. 모든 서비스 > AI-ML > Simple AI Inference 메뉴를 클릭하세요. Simple AI Inference의 Service Home 페이지로 이동합니다.
  2. Service Home 페이지에서 API 키 메뉴를 클릭하세요. API 키 목록 페이지로 이동합니다.
  3. API 키 목록 페이지에서 삭제할 API 키가 비활성화 상태인지 확인하세요.
  4. API 키 목록 페이지에서 삭제할 API 키를 모두 선택한 후, 삭제 버튼을 클릭하세요.
  5. 삭제를 알리는 팝업창이 열리면 확인 버튼을 클릭하세요.

Inference 해지하기

Serverless Inference 해지하기

Serverless Inference를 해지하려면 다음 절차를 따르세요.

  1. 모든 서비스 > AI-ML > Simple AI Inference 메뉴를 클릭하세요. Simple AI Inference의 Service Home 페이지로 이동합니다.
  2. Service Home 페이지에서 Serverless Inference 메뉴를 클릭하세요. Serverless Inference 목록 페이지로 이동합니다.
  3. Serverless Inference 목록 페이지에서 삭제할 Serverless Inference의서비스 해지 버튼을 클릭하세요.
  4. 서비스 해지를 알리는 팝업창이 열리면 서비스명을 입력한 후, 확인 버튼을 클릭하세요.

1.3 - References

References

Simple AI Inference에서 지원하는 API Reference를 확인할 수 있습니다.

구분설명
API ReferenceSimple AI Inference에서 지원하는 API 목록
표. Simple AI Inference Reference 목록

1.3.1 - API Reference

API Reference 개요

Simple AI Inference에서 지원하는 API Reference는 다음과 같습니다.

API명API상세 설명
Chat Completions APIPOST /v1/chat/completionsOpenAI의 Completions API와 호환되며 OpenAI Python client에서 사용할 수 있습니다.
Completions APIPOST /v1/completionsOpenAI의 Completions API와 호환되며 OpenAI Python client에서 사용할 수 있습니다.
Embedding APIPOST /v1/embeddings텍스트를 고차원 벡터(임베딩)로 변환하여, 텍스트 간 유사도 계산, 클러스터링, 검색 등 다양한 자연어 처리(NLP) 작업에 활용할 수 있습니다.
Rerank APIPOST /v2/rerank임베딩 모델이나 크로스 인코더 모델을 적용하여 단일 쿼리와 문서 목록의 각 항목 간 관련성을 예측합니다.
Responses APIPOST /v1/responsesOpenAI의 Responses API와 호환되며 텍스트, 이미지, 파일 입력으로 텍스트 또는 JSON 출력을 생성할 수 있으며, 함수 호출 및 빌트인 도구를 지원합니다.
Tokenize APIPOST /tokenize텍스트를 토큰 ID로 변환합니다. Completion 방식과 Chat 방식을 지원합니다.
Models APIGET /v1/models배포된 모델의 목록을 반환합니다. OpenAI의 Models API와 호환됩니다.
표. Simple AI Inference 지원 API 목록

Chat Completions API

POST /v1/chat/completions

개요

Chat Completions API는 OpenAI의 Completions API와 호환되며 OpenAI Python client에서 사용할 수 있습니다.

Request

Context

KeyTypeDescriptionExample
Base URLstringAPI 요청을 위한 Simple AI Inference URLSimple AI Inference 엔드포인트
Request MethodstringAPI 요청에 사용되는 HTTP 메서드POST
Headersobject요청 시 필요한 헤더 정보{ “Content-Type”: “application/json”, “Authorization”: “bearer sai-xxxxxxx…” }
Body Parametersobject요청 본문에 포함되는 파라미터{“model”: “google/gemma-4-31B-it”, “messages”: [{“role”: “user”, “content”: “hello”}], “stream”: true }
표. Chat Completions API - Context

Path Parameters

NametypeRequiredDescriptionDefault valueBoundary valueExample
None
표. Chat Completions API - Path Parameters

Query Parameters

NametypeRequiredDescriptionDefault valueBoundary valueExample
None
표. Chat Completions API - Query Parameters

Body Parameters

NameName SubtypeRequiredDescriptionDefault valueBoundary valueExample
model-string응답 생성에 사용할 모델을 지정“google/gemma-4-31B-it”
messagesrolestring대화 내역을 포함하는 메시지 리스트[ { “role” : “user” , “content” : “message” }]
frequency_penalty-number반복되는 토큰에 대한 패널티를 조정0-2.0 ~ 2.00.5
logit_bias-object특정 토큰의 확률을 조정(예시: { “100”: 2.0 })nullKey: 토큰 ID, Value: -100 ~ 100{ “100”: 2.0 }
logprobs-boolean상위 logprobs 개수의 토큰 확률을 반환falsetrue, falsetrue
max_completion_tokens-integer최대 생성 토큰 수를 제한None0 ~ 모델 최대값100
max_tokens (Deprecated)-integer최대 생성 토큰 수를 제한None0 ~ 모델 최대값100
n-integer생성할 응답 개수를 지정13
presence_penalty-number기존 텍스트에 포함된 토큰에 대한 패널티를 조정0-2.0 ~ 2.01.0
seed-integer랜덤성 제어를 위한 시드 값을 지정None
stop-string / array / null특정 문자열이 나타나면 생성을 중단null"\n"
stream-boolean스트리밍 방식으로 결과를 반환할지 여부falsetrue/falsetrue
stream_optionsinclude_usage, continuous_usage_statsobject스트리밍 옵션을 제어(예시: 사용량 통계 포함 여부)null{ “include_usage”: true }
temperature-number생성 결과의 창의성을 조절(높을수록 무작위)10.0 ~ 1.00.7
tool_choice-string어떤 Tool이 모델에 의해 호출될지 조정
  • none: Tool을 호출하지 않음
  • auto: 모델이 메시지를 생성할지 Tool을 호출할지 선택
  • required: 모델이 1개 이상의 Tool을 호출
  • tool이 없을 때: none
  • tool이 있을 때: auto
tools-array모델이 호출할 수 있는 Tool의 리스트
  • functions만 Tool로 지원
  • 128 functions까지 지원
None
top_logprobs-integer0과 20사이의 정수 가장 확률이 높은 토큰의 수를 지정
  • 각각은 log 확률값과 연관됨
  • logprobs가 true로 선택되어야 함
  • completions에 대한 top k에 대한 확률값을 보여 줌
None0 ~ 203
top_p-number토큰의 샘플링 확률을 제한(높을수록 더 많은 토큰 고려)10.0 ~ 1.00.9
prompt_safety_model-stringPrompt 검사를 위한 guard 모델 지정. 설정 시 guard 모델로 prompt를 먼저 검사하며, unsafe로 판단되면 guard 결과를 반환하고 safe이면 model 파라미터에 지정된 모델로 요청을 처리“meta-llama/Llama-Guard-4-12B”
chat_template_kwargs-object템플릿 렌더러에 전달할 추가 키워드 인자. 모델별 reasoning 설정을 위해 사용(자세한 내용은 Reasoning 설정 참고)null{ “enable_thinking”: true }
표. Chat Completions API - Body Parameters

Example

배경색 변경
curl -X 'POST' \
   {Simple AI Inference 엔드포인트}/v1/chat/completions \
  -H 'Authorization: bearer sai-xxxxxxx...' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "google/gemma-4-31B-it",
      "messages": [
      {
        "role": "assistant",
        "content": "You are a helpful assistant."
      },
      {
        "role": "user",
        "content": "한국의 수도는 어디입니까?"
      }
    ]
}'
curl -X 'POST' \
   {Simple AI Inference 엔드포인트}/v1/chat/completions \
  -H 'Authorization: bearer sai-xxxxxxx...' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "google/gemma-4-31B-it",
      "messages": [
      {
        "role": "assistant",
        "content": "You are a helpful assistant."
      },
      {
        "role": "user",
        "content": "한국의 수도는 어디입니까?"
      }
    ]
}'
코드 블럭. Chat Completions API Request Example

Response

200 OK

NameTypeDescription
idstring응답의 고유 식별자
objectstring응답 객체의 타입(예시: “chat.completion”)
createdinteger생성 시각(Unix timestamp, 초 단위)
modelstring사용된 모델의 이름
choicesarray생성된 응답 선택지 목록
choices[].indexinteger해당 choice의 인덱스
choices[].messageobject생성된 메시지 객체
choices[].message.rolestring메시지 작성자의 역할(예시: “assistant”)
choices[].message.contentstring생성된 메시지의 실제 내용
choices[].message.reasoningstring생성된 추론 메시지의 실제 내용
choices[].message.tool_callsarray (optional)도구 호출 정보(모델/설정에 따라 포함될 수 있음)
choices[].finish_reasonstring or null응답이 종료된 이유(예시: “stop”, “length” 등)
choices[].stop_reasonobject or null추가 중단 이유 세부 정보
choices[].logprobsobject or null토큰 별 로그 확률 정보(설정에 따라 포함)
usageobject토큰 사용량 통계
usage.prompt_tokensinteger입력 프롬프트에 사용된 토큰 수
usage.completion_tokensinteger생성된 응답에 사용된 토큰 수
usage.total_tokensinteger전체 토큰 수(입력 + 출력)
표. Chat Completions API - 200 OK

Error Code

HTTP status codeErrorCode 설명
400Bad Request
422Prompt Guard 등 정책에 의해 요청이 거절된 경우
500Internal Server Error
표. Chat Completions API - Error Code

Example

배경색 변경
{
  "id": "chatcmpl-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "object": "chat.completion",
  "created": 1749702816,
  "model": "google/gemma-4-31B-it",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "reasoning": null,
        "content": "한국의 수도는 서울입니다.",
        "tool_calls": []
      },
      "logprobs": null,
      "finish_reason": "stop",
      "stop_reason": null
    }
  ],
  "usage": {
    "prompt_tokens": 54,
    "total_tokens": 62,
    "completion_tokens": 8,
    "prompt_tokens_details": null
  },
  "prompt_logprobs": null
}
{
  "id": "chatcmpl-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "object": "chat.completion",
  "created": 1749702816,
  "model": "google/gemma-4-31B-it",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "reasoning": null,
        "content": "한국의 수도는 서울입니다.",
        "tool_calls": []
      },
      "logprobs": null,
      "finish_reason": "stop",
      "stop_reason": null
    }
  ],
  "usage": {
    "prompt_tokens": 54,
    "total_tokens": 62,
    "completion_tokens": 8,
    "prompt_tokens_details": null
  },
  "prompt_logprobs": null
}
코드 블럭. Chat Completions API Response Example

Prompt Guard 응답

prompt_safety_model 파라미터를 설정한 경우, guard 모델이 prompt를 먼저 검사합니다.

  • safe: model 파라미터에 지정된 모델로 요청이 그대로 처리됩니다.
  • unsafe: 아래와 같은 형태의 guard 결과를 반환하며 요청이 중단됩니다.
배경색 변경
{
  "guard_result": "unsafe",
  "categories": ["S1", "S2"],
  "categories_description": ["Violent Crimes", "Non-Violent Crimes"],
  "messages": [
    "Cannot fulfill the request due to violent content.",
    "Cannot respond as it may promote illegal activities."
  ]
}
{
  "guard_result": "unsafe",
  "categories": ["S1", "S2"],
  "categories_description": ["Violent Crimes", "Non-Violent Crimes"],
  "messages": [
    "Cannot fulfill the request due to violent content.",
    "Cannot respond as it may promote illegal activities."
  ]
}
코드 블럭. Chat Completions API Prompt Guard 응답 Example (unsafe)

Reasoning 설정

chat_template_kwargs 파라미터를 통해 모델별 reasoning(추론 모드) 설정을 제어할 수 있습니다. 모델마다 기본 동작과 지원하는 옵션이 다릅니다.

모델기본 reasoningchat_template_kwargs 설정설명
zai-org/GLM-5.2켜짐 (Think Max)
  • Think Max(기본): {“reasoning_effort”: “max”} 또는 생략 — 가장 깊은 추론
  • Think High: {“reasoning_effort”: “high”} — 균형된 깊이와 지연
  • Non-think: {“enable_thinking”: false} — 빠른 응답, 추론 없음
reasoning_effort로 추론 깊이 조절, enable_thinking=false로 비활성화
Qwen/Qwen3.6-27B켜짐
  • 비활성화: {“enable_thinking”: false}
기본적으로 reasoning이 활성화되어 있으며, 필요시 비활성화 가능
google/gemma-4-31B-it꺼짐
  • 활성화: {“enable_thinking”: true}
기본적으로 reasoning이 비활성화되어 있으며, 필요시 활성화 가능
openai/gpt-oss-120bmedium
  • {“reasoning_effort”: “low”}
  • {“reasoning_effort”: “medium”} (기본)
  • {“reasoning_effort”: “high”}
reasoning_effort로 추론 깊이 조절 (기본값: medium)
표. Chat Completions API - 모델별 Reasoning 설정
배경색 변경
curl -X 'POST' \
   {Simple AI Inference 엔드포인트}/v1/chat/completions \
  -H 'Authorization: bearer sai-xxxxxxx...' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "zai-org/GLM-5.2",
    "messages": [
      {
        "role": "user",
        "content": "복잡한 수학 문제를 풀어주세요."
      }
    ],
    "chat_template_kwargs": {
      "reasoning_effort": "high"
    }
  }'
curl -X 'POST' \
   {Simple AI Inference 엔드포인트}/v1/chat/completions \
  -H 'Authorization: bearer sai-xxxxxxx...' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "zai-org/GLM-5.2",
    "messages": [
      {
        "role": "user",
        "content": "복잡한 수학 문제를 풀어주세요."
      }
    ],
    "chat_template_kwargs": {
      "reasoning_effort": "high"
    }
  }'
코드 블럭. Chat Completions API Reasoning 설정 Example

참고

Completions API

POST /v1/completions

개요

Completions API는 OpenAI의 Completions API와 호환되며 OpenAI Python client에서 사용할 수 있습니다.

Request

Context

KeyTypeDescriptionExample
Base URLstringAPI 요청을 위한 Simple AI Inference URLSimple AI Inference 엔드포인트
Request MethodstringAPI 요청에 사용되는 HTTP 메서드POST
Headersobject요청 시 필요한 헤더 정보{ “Content-Type”: “application/json”, “Authorization”: “bearer sai-xxxxxxx…” }
Body Parametersobject요청 본문에 포함되는 파라미터{“model”: “google/gemma-4-31B-it”, “prompt” : “hello”, “stream”: true }
표. Completions API - Context

Path Parameters

NametypeRequiredDescriptionDefault valueBoundary valueExample
None
표. Completions API - Path Parameters

Query Parameters

NametypeRequiredDescriptionDefault valueBoundary valueExample
None
표. Completions API - Query Parameters

Body Parameters

NameName SubtypeRequiredDescriptionDefault valueBoundary valueExample
model-string응답 생성에 사용할 모델을 지정“google/gemma-4-31B-it”
prompt-array, string사용자 입력 텍스트""
echo-boolean입력 텍스트를 출력에 포함시킬지 여부falsetrue/falsetrue
frequency_penalty-number반복되는 토큰에 대한 패널티를 조정0-2.0 ~ 2.00.5
logit_bias-object특정 토큰의 확률을 조정 (예시: { “100”: 2.0 })nullKey: 토큰 ID, Value: -100~100{ “100”: 2.0 }
logprobs-integer상위 logprobs 개수의 토큰 확률을 반환null1 ~ 55
max_completion_tokens-integer최대 생성 토큰 수를 제한None0~모델 최대 값100
max_tokens (Deprecated)-integer최대 생성 토큰 수를 제한None0~모델 최대 값100
n-integer생성할 응답 개수를 지정13
presence_penalty-number기존 텍스트에 포함된 토큰에 대한 패널티를 조정0-2.0 ~ 2.01.0
seed-integer랜덤성 제어를 위한 시드값을 지정None
stop-string / array / null특정 문자열이 나타나면 생성을 중단null"\n"
stream-boolean스트리밍 방식으로 결과를 반환할지 여부falsetrue/falsetrue
stream_optionsinclude_usage, continuous_usage_statsobject스트리밍 옵션을 제어 (예시: 사용량 통계 포함 여부)null{ “include_usage”: true }
temperature-number생성 결과의 창의성을 조절 (높을수록 무작위)10.0 ~ 1.00.7
top_p-number토큰의 샘플링 확률을 제한 (높을수록 더 많은 토큰 고려)10.0 ~ 1.00.9
표. Completions API - Body Parameters

Example

배경색 변경
curl -X 'POST' \
   {Simple AI Inference 엔드포인트}/v1/completions \
  -H 'Authorization: bearer sai-xxxxxxx...' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "google/gemma-4-31B-it",
    "prompt": "한국의 수도는 어디입니까?",
    "temperature": 0.7
  }'
curl -X 'POST' \
   {Simple AI Inference 엔드포인트}/v1/completions \
  -H 'Authorization: bearer sai-xxxxxxx...' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "google/gemma-4-31B-it",
    "prompt": "한국의 수도는 어디입니까?",
    "temperature": 0.7
  }'
코드 블럭. Completions API Request Example

Response

200 OK

NameTypeDescription
idstring응답의 고유 식별자
objectstring응답 객체의 타입(예시: “text_completion”)
createdinteger생성 시각(Unix timestamp, 초 단위)
modelstring사용된 모델의 이름
choicesarray생성된 응답 선택지 목록
choices[].indexnumber해당 choice의 인덱스
choices[].textstring생성된 텍스트 객체
choices[].logprobsobject토큰 별 로그 확률 정보(설정에 따라 포함)
choices[].finish_reasonstring or null응답이 종료된 이유(예시: “stop”, “length” 등)
choices[].stop_reasonobject or null추가 중단 이유 세부 정보
choices[].prompt_logprobsobject or null입력 프롬프트 토큰별 로그 확률(널 가능)
usageobject토큰 사용량 통계
usage.prompt_tokensnumber입력 프롬프트에 사용된 토큰 수
usage.total_tokensnumber전체 토큰 수(입력 + 출력)
usage.completion_tokensnumber생성된 응답에 사용된 토큰 수
usage.prompt_tokens_detailsobject프롬프트 토큰 사용 세부 정보
표. Completions API - 200 OK

Error Code

HTTP status codeErrorCode 설명
400Bad Request
422Prompt Guard 등 정책에 의해 요청이 거절된 경우
500Internal Server Error
표. Completions API - Error Code

Example

배경색 변경
{
  "id": "cmpl-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "object": "text_completion",
  "created": 1749702612,
  "model": "google/gemma-4-31B-it",
  "choices": [
    {
      "index": 0,
      "text": " \nOur capital city is Seoul. \n\nA. 1\nB. ",
      "logprobs": null,
      "finish_reason": "length",
      "stop_reason": null,
      "prompt_logprobs": null
    }
  ],
  "usage": {
    "prompt_tokens": 9,
    "total_tokens": 25,
    "completion_tokens": 16,
    "prompt_tokens_details": null
  }
}
{
  "id": "cmpl-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "object": "text_completion",
  "created": 1749702612,
  "model": "google/gemma-4-31B-it",
  "choices": [
    {
      "index": 0,
      "text": " \nOur capital city is Seoul. \n\nA. 1\nB. ",
      "logprobs": null,
      "finish_reason": "length",
      "stop_reason": null,
      "prompt_logprobs": null
    }
  ],
  "usage": {
    "prompt_tokens": 9,
    "total_tokens": 25,
    "completion_tokens": 16,
    "prompt_tokens_details": null
  }
}
코드 블럭. Completions API Response Example

참고

Embedding API

POST /v1/embeddings

개요

Embedding API는 주어진 텍스트를 고차원 벡터(임베딩)로 변환하여, 텍스트 간 유사도 계산, 클러스터링, 검색 등 다양한 자연어 처리(NLP) 작업에 활용할 수 있도록 지원합니다.

Request

Context

KeyTypeDescriptionExample
Base URLstringAPI 요청을 위한 Simple AI Inference URLSimple AI Inference 엔드포인트
Request MethodstringAPI 요청에 사용되는 HTTP 메서드POST
Headersobject요청 시 필요한 헤더 정보{ “Content-Type”: “application/json”, “Authorization”: “bearer sai-xxxxxxx…” }
Body Parametersobject요청 본문에 포함되는 파라미터{ “model”: “Qwen/Qwen3-VL-Embedding-8B”, “input”: “What is the capital of France?”}
표. Embedding API - Context

Path Parameters

NametypeRequiredDescriptionDefault valueBoundary valueExample
None
표. Embedding API - Path Parameters

Query Parameters

NametypeRequiredDescriptionDefault valueBoundary valueExample
None
표. Embedding API - Query Parameters

Body Parameters

NameName SubtypeRequiredDescriptionDefault valueBoundary valueExample
model-string응답 생성에 사용할 모델을 지정“Qwen/Qwen3-VL-Embedding-8B”
input-array사용자의 검색 질의 또는 질문“What is the capital of France?"
encoding_format-string임베딩을 반환할 형식을 지정“float”“float”, “base64”[0.01319122314453125,0.057220458984375, … (생략)
truncate_prompt_tokens-integer입력 토큰 수를 제한> 0100
표. Embedding API - Body Parameters

Example

배경색 변경
curl -X 'POST' \
   {Simple AI Inference 엔드포인트}/v1/embeddings \
  -H 'Authorization: bearer sai-xxxxxxx...' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "Qwen/Qwen3-VL-Embedding-8B",
    "input": "What is the capital of France?",
	"encoding_format": "float"
  }'
curl -X 'POST' \
   {Simple AI Inference 엔드포인트}/v1/embeddings \
  -H 'Authorization: bearer sai-xxxxxxx...' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "Qwen/Qwen3-VL-Embedding-8B",
    "input": "What is the capital of France?",
	"encoding_format": "float"
  }'
코드 블럭. Embedding API Request Example

Response

200 OK

NameTypeDescription
idstring응답의 고유 식별자
objectstring응답 객체의 타입(예시: “list” )
creatednumber생성 시각(Unix timestamp, 초 단위)
modelstring사용된 모델의 이름
dataarray임베딩 결과를 담은 객체 배열
data.indexnumber입력 텍스트의 순서 인덱스 (예시: 입력 텍스트가 여러 개일 경우 순서를 나타냄)
data.objectstring데이터 항목 타입
data.embeddingarray입력 텍스트의 임베딩 벡터 값 (모델의 임베딩 차원에 따른 float 배열로 구성)
usageobject토큰 사용량 통계
usage.prompt_tokensnumber입력 프롬프트에 사용된 토큰 수
usage.total_tokensnumber전체 토큰 수(입력 + 출력)
usage.completion_tokensnumber생성된 응답에 사용된 토큰 수
usage.prompt_tokens_detailsobject프롬프트 토큰의 세부 정보
표. Embedding API - 200 OK

Error Code

HTTP status codeErrorCode 설명
400Bad Request
422Prompt Guard 등 정책에 의해 요청이 거절된 경우
500Internal Server Error
표. Embedding API - Error Code

Example

배경색 변경
{
  "id":"embd-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "object":"list",
  "created":1749035024,
  "model":"Qwen/Qwen3-VL-Embedding-8B",
  "data":[
    {
      "index":0,
      "object":"embedding",
      "embedding":
      [0.01319122314453125,0.057220458984375,-0.028533935546875,-0.0008697509765625,-0.01422119140625,0.033416748046875,-0.0062408447265625,-0.04364013671875,-0.004497528076171875,0.0008072853088378906,-0.0193328857421875,0.041168212890625,-0.019317626953125,-0.0188751220703125,-0.047088623046875,
      -0 ....(생략)

      -0.05706787109375,-0.0147705078125]
    }
  ],
  "usage":
  {
    "prompt_tokens":9,
    "total_tokens":9,
    "completion_tokens":0,
    "prompt_tokens_details":null
  }
}
{
  "id":"embd-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "object":"list",
  "created":1749035024,
  "model":"Qwen/Qwen3-VL-Embedding-8B",
  "data":[
    {
      "index":0,
      "object":"embedding",
      "embedding":
      [0.01319122314453125,0.057220458984375,-0.028533935546875,-0.0008697509765625,-0.01422119140625,0.033416748046875,-0.0062408447265625,-0.04364013671875,-0.004497528076171875,0.0008072853088378906,-0.0193328857421875,0.041168212890625,-0.019317626953125,-0.0188751220703125,-0.047088623046875,
      -0 ....(생략)

      -0.05706787109375,-0.0147705078125]
    }
  ],
  "usage":
  {
    "prompt_tokens":9,
    "total_tokens":9,
    "completion_tokens":0,
    "prompt_tokens_details":null
  }
}
코드 블럭. Embedding API Response Example

참고

Rerank API

POST /v2/rerank

개요

Rerank API는 임베딩 모델이나 크로스 인코더 모델을 적용하여 단일 쿼리와 문서 목록의 각 항목 간 관련성을 예측할 수 있습니다. 일반적으로 문장 쌍의 점수는 두 문장 간 유사도를 0에서 1 사이의 범위로 나타냅니다.

  • Embedding 기반 모델: Query와 문서를 각각 벡터로 바꾼 뒤, 벡터간의 유사도(예시: 코사인 유사도)를 측정하여 점수를 계산합니다.
  • Reranker(Cross-Encoder) 기반 모델: Query와 문서를 한쌍으로 모델에 넣어서 평가합니다.

Request

Context

KeyTypeDescriptionExample
Base URLstringAPI 요청을 위한 Simple AI Inference URLSimple AI Inference 엔드포인트
Request MethodstringAPI 요청에 사용되는 HTTP 메서드POST
Headersobject요청 시 필요한 헤더 정보{ “Content-Type”: “application/json”, “Authorization”: “bearer sai-xxxxxxx…” }
Body Parametersobject요청 본문에 포함되는 파라미터{ “model”: “Qwen/Qwen3-VL-Reranker-8B”, “query”: …, “documents”: […] }
표. Rerank API - Context

Path Parameters

NametypeRequiredDescriptionDefault valueBoundary valueExample
None
표. Rerank API - Path Parameters

Query Parameters

NametypeRequiredDescriptionDefault valueBoundary valueExample
None
표. Rerank API - Query Parameters

Body Parameters

NameName SubtypeRequiredDescriptionDefault valueBoundary valueExample
model-string응답 생성에 사용할 모델을 지정“Qwen/Qwen3-VL-Reranker-8B”
query-string사용자의 검색 질의 또는 질문“What is the capital of France?"
documents-array재정렬 대상인 문서 목록최대 모델 입력 길이 제한[“The capital of France is Paris.”]
top_n-integer반환할 상위 문서 개수를 지정(0이면 전체 반환)0> 05
truncate_prompt_tokens-integer입력 토큰 수를 제한> 0100
표. Rerank API - Body Parameters

Example

배경색 변경
curl -X 'POST' \
   {Simple AI Inference 엔드포인트}/v2/rerank \
  -H 'Authorization: bearer sai-xxxxxxx...' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "Qwen/Qwen3-VL-Reranker-8B",
    "query": "What is the capital of France?",
    "documents": [
      "The capital of France is Paris.",
      "France capital city is known for the Eiffel Tower.",
      "Paris is located in the north-central part of France."
    ],
    "top_n": 2, 
    "truncate_prompt_tokens": 512
  }'
curl -X 'POST' \
   {Simple AI Inference 엔드포인트}/v2/rerank \
  -H 'Authorization: bearer sai-xxxxxxx...' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "Qwen/Qwen3-VL-Reranker-8B",
    "query": "What is the capital of France?",
    "documents": [
      "The capital of France is Paris.",
      "France capital city is known for the Eiffel Tower.",
      "Paris is located in the north-central part of France."
    ],
    "top_n": 2, 
    "truncate_prompt_tokens": 512
  }'
코드 블럭. Rerank API Request Example

Response

200 OK

NameTypeDescription
idstringAPI 응답의 고유 식별자(UUID 형식)
modelstring결과를 생성한 모델의 이름
usageobject요청에 사용된 리소스 정보를 담은 객체
usage.prompt_tokensinteger입력 프롬프트에 사용된 토큰 수
usage.total_tokensinteger요청 처리에 사용된 총 토큰 수
resultsarray쿼리와 관련된 문서들의 결과를 담은 배열
results[].indexinteger결과 배열 내의 순서 번호
results[].documentobject검색된 문서의 내용을 담은 객체
results[].document.textstring검색된 문서의 실제 텍스트 내용
results[].document.multi_modalobject or null멀티모달 문서 정보
results[].relevance_scorefloat쿼리와 문서 간의 관련성을 나타내는 점수(0 ~ 1)
표. Rerank API - 200 OK

Error Code

HTTP status codeErrorCode 설명
400Bad Request
422Prompt Guard 등 정책에 의해 요청이 거절된 경우
500Internal Server Error
표. Rerank API - Error Code

Example

배경색 변경
{
  "id": "score-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "model": "Qwen/Qwen3-VL-Reranker-8B",
  "usage": {
    "prompt_tokens": 54,
    "total_tokens": 54
  },
  "results": [
    {
      "index": 0,
      "document": {
        "text": "The capital of France is Paris.",
        "multi_modal": null
      },
      "relevance_score": 0.9237253665924072
    },
    {
      "index": 2,
      "document": {
        "text": "Paris is located in the north-central part of France.",
        "multi_modal": null
      },
      "relevance_score": 0.9181006550788879
    }
  ]
}
{
  "id": "score-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "model": "Qwen/Qwen3-VL-Reranker-8B",
  "usage": {
    "prompt_tokens": 54,
    "total_tokens": 54
  },
  "results": [
    {
      "index": 0,
      "document": {
        "text": "The capital of France is Paris.",
        "multi_modal": null
      },
      "relevance_score": 0.9237253665924072
    },
    {
      "index": 2,
      "document": {
        "text": "Paris is located in the north-central part of France.",
        "multi_modal": null
      },
      "relevance_score": 0.9181006550788879
    }
  ]
}
코드 블럭. Rerank API Response Example

참고

Responses API

POST /v1/responses

개요

Responses API는 OpenAI의 Responses API와 호환되며 OpenAI Python client에서 사용할 수 있습니다. 텍스트, 이미지, 파일 입력으로 텍스트 또는 JSON 출력을 생성할 수 있으며, 함수 호출 및 빌트인 도구(web search, file search 등)를 지원합니다.

Request

Context

KeyTypeDescriptionExample
Base URLstringAPI 요청을 위한 Simple AI Inference URLSimple AI Inference 엔드포인트
Request MethodstringAPI 요청에 사용되는 HTTP 메서드POST
Headersobject요청 시 필요한 헤더 정보{ “Content-Type”: “application/json”, “Authorization”: “bearer sai-xxxxxxx…” }
Body Parametersobject요청 본문에 포함되는 파라미터{“model”: “openai/gpt-oss-120b”, “input”: “한국의 수도는 어디입니까?” }
표. Responses API - Context

Path Parameters

NametypeRequiredDescriptionDefault valueBoundary valueExample
None
표. Responses API - Path Parameters

Query Parameters

NametypeRequiredDescriptionDefault valueBoundary valueExample
None
표. Responses API - Query Parameters

Body Parameters

NameName SubtypeRequiredDescriptionDefault valueBoundary valueExample
model-string응답 생성에 사용할 모델 ID“openai/gpt-oss-120b”
input-string / array모델에 대한 텍스트/이미지/파일 입력. 문자열 또는 InputItem 배열“Tell me a story” 또는 [{ “role” : “user”, “content” : “message” }]
instructions-string모델 컨텍스트에 삽입되는 시스템(개발자) 메시지null“You are a helpful assistant."
temperature-number샘플링 온도. 높을수록 무작위, 낮을수록 결정적10 ~ 20.7
top_p-numbernucleus 샘플링 확률 제한. temperature와 함께 변경 권장하지 않음10 ~ 10.9
top_logprobs-integer각 토큰 위치에서 반환할 최대 로그 확률 토큰 수null0 ~ 203
stream-boolean스트리밍 방식으로 결과를 반환할지 여부falsetrue/falsetrue
stream_optionsinclude_usageobject스트리밍 옵션을 제어(예시: 사용량 통계 포함 여부)null{ “include_usage”: true }
tools-array모델이 호출할 수 있는 도구 목록(빌트인 도구 + function)
  • 빌트인 도구: web_search, file_search, code_interpreter 등
  • function: 128개까지 지원
[]
tool_choice-string / object모델이 도구를 선택하는 방식
  • none: 도구를 호출하지 않음
  • auto: 모델이 메시지를 생성할지 도구를 호출할지 선택
  • required: 모델이 1개 이상의 도구를 호출
  • 도구가 없을 때: none
  • 도구가 있을 때: auto
prompt_safety_model-stringPrompt 검사를 위한 guard 모델 지정. 설정 시 guard 모델로 prompt를 먼저 검사하며, unsafe로 판단되면 guard 결과를 반환하고 safe이면 model 파라미터에 지정된 모델로 요청을 처리“meta-llama/Llama-Guard-4-12B”
chat_template_kwargs-object템플릿 렌더러에 전달할 추가 키워드 인자. 모델별 reasoning 설정을 위해 사용(gpt-oss-120b는 reasoning 파라미터 사용, 자세한 내용은 Reasoning 설정 참고)null{ “enable_thinking”: true }
reasoning-objectgpt-oss-120b 모델의 reasoning 설정. effort 필드로 추론 깊이 지정(low/medium/high, 기본값 medium)null{ “effort”: “high” }
표. Responses API - Body Parameters

Example

배경색 변경
curl -X 'POST' \
   {Simple AI Inference 엔드포인트}/v1/responses \
  -H 'Authorization: bearer sai-xxxxxxx...' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "openai/gpt-oss-120b",
    "input": "한국의 수도는 어디입니까?"
  }'
curl -X 'POST' \
   {Simple AI Inference 엔드포인트}/v1/responses \
  -H 'Authorization: bearer sai-xxxxxxx...' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "openai/gpt-oss-120b",
    "input": "한국의 수도는 어디입니까?"
  }'
코드 블럭. Responses API Request Example

Response

200 OK

NameTypeDescription
idstring응답의 고유 식별자
objectstring응답 객체 타입(항상 “response”)
created_atinteger생성 시각(Unix timestamp, 초 단위)
completed_atinteger or null완료 시각(completed 상태일 때만 존재)
statusstring응답 상태(completed/failed/in_progress/cancelled/queued/incomplete)
modelstring사용된 모델 이름
outputarray모델이 생성한 출력 항목 배열
output[].typestring출력 항목 타입(예시: “message”)
output[].idstring출력 항목 ID
output[].statusstring항목 상태(예시: “completed”)
output[].rolestring메시지 작성자 역할(예시: “assistant”)
output[].contentarray콘텐츠 배열
output[].content[].typestring콘텐츠 타입(예시: “output_text”)
output[].content[].textstring생성된 텍스트
output[].content[].annotationsarray어노테이션 배열
errorobject or null오류 정보
incomplete_detailsobject or null미완료 사유(reason: max_output_tokens / content_filter)
instructionsstring or null시스템/개발자 메시지
max_output_tokensinteger or null최대 출력 토큰 수
parallel_tool_callsboolean병렬 도구 호출 허용 여부
previous_response_idstring or null이전 응답 ID
reasoningobject or nullreasoning 구성(effort, summary)
storeboolean응답 저장 여부
temperaturenumber샘플링 온도
textobject텍스트 응답 구성(format 등)
tool_choicestring / object도구 선택 방식
toolsarray도구 목록
top_pnumberTop P 값
truncationstring잘라내기 전략
usageobject토큰 사용량 통계
usage.input_tokensinteger입력 토큰 수
usage.input_tokens_details.cached_tokensinteger캐시된 토큰 수
usage.output_tokensinteger출력 토큰 수
usage.output_tokens_details.reasoning_tokensintegerreasoning 토큰 수
usage.total_tokensinteger전체 토큰 수
metadataobject메타데이터
표. Responses API - 200 OK

Error Code

HTTP status codeErrorCode 설명
400Bad Request
422Prompt Guard 등 정책에 의해 요청이 거절된 경우
500Internal Server Error
표. Responses API - Error Code

Example

배경색 변경
{
  "id": "resp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "object": "response",
  "created_at": 1741476542,
  "status": "completed",
  "completed_at": 1741476543,
  "error": null,
  "incomplete_details": null,
  "instructions": null,
  "max_output_tokens": null,
  "model": "openai/gpt-oss-120b",
  "output": [
    {
      "type": "message",
      "id": "msg_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "status": "completed",
      "role": "assistant",
      "content": [
        {
          "type": "output_text",
          "text": "한국의 수도는 서울입니다.",
          "annotations": []
        }
      ]
    }
  ],
  "parallel_tool_calls": true,
  "previous_response_id": null,
  "reasoning": {
    "effort": null,
    "summary": null
  },
  "store": true,
  "temperature": 1.0,
  "text": {
    "format": {
      "type": "text"
    }
  },
  "tool_choice": "auto",
  "tools": [],
  "top_p": 1.0,
  "truncation": "disabled",
  "usage": {
    "input_tokens": 54,
    "input_tokens_details": {
      "cached_tokens": 0
    },
    "output_tokens": 8,
    "output_tokens_details": {
      "reasoning_tokens": 0
    },
    "total_tokens": 62
  },
  "metadata": {}
}
{
  "id": "resp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "object": "response",
  "created_at": 1741476542,
  "status": "completed",
  "completed_at": 1741476543,
  "error": null,
  "incomplete_details": null,
  "instructions": null,
  "max_output_tokens": null,
  "model": "openai/gpt-oss-120b",
  "output": [
    {
      "type": "message",
      "id": "msg_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "status": "completed",
      "role": "assistant",
      "content": [
        {
          "type": "output_text",
          "text": "한국의 수도는 서울입니다.",
          "annotations": []
        }
      ]
    }
  ],
  "parallel_tool_calls": true,
  "previous_response_id": null,
  "reasoning": {
    "effort": null,
    "summary": null
  },
  "store": true,
  "temperature": 1.0,
  "text": {
    "format": {
      "type": "text"
    }
  },
  "tool_choice": "auto",
  "tools": [],
  "top_p": 1.0,
  "truncation": "disabled",
  "usage": {
    "input_tokens": 54,
    "input_tokens_details": {
      "cached_tokens": 0
    },
    "output_tokens": 8,
    "output_tokens_details": {
      "reasoning_tokens": 0
    },
    "total_tokens": 62
  },
  "metadata": {}
}
코드 블럭. Responses API Response Example

Prompt Guard 응답

prompt_safety_model 파라미터를 설정한 경우, guard 모델이 prompt를 먼저 검사합니다.

  • safe: model 파라미터에 지정된 모델로 요청이 그대로 처리됩니다.
  • unsafe: 아래와 같은 형태의 guard 결과를 반환하며 요청이 중단됩니다.
배경색 변경
{
  "guard_result": "unsafe",
  "categories": ["S1", "S2"],
  "categories_description": ["Violent Crimes", "Non-Violent Crimes"],
  "messages": [
    "Cannot fulfill the request due to violent content.",
    "Cannot respond as it may promote illegal activities."
  ]
}
{
  "guard_result": "unsafe",
  "categories": ["S1", "S2"],
  "categories_description": ["Violent Crimes", "Non-Violent Crimes"],
  "messages": [
    "Cannot fulfill the request due to violent content.",
    "Cannot respond as it may promote illegal activities."
  ]
}
코드 블럭. Responses API Prompt Guard 응답 Example (unsafe)

Reasoning 설정

chat_template_kwargs 또는 reasoning 파라미터를 통해 모델별 reasoning(추론 모드) 설정을 제어할 수 있습니다.

  • gpt-oss-120b: reasoning 파라미터의 effort 필드로 추론 깊이를 지정합니다. (low/medium/high, 기본값 medium)
  • 기타 모델: chat_template_kwargs 파라미터를 사용하며, 설정 방법은 Chat Completions API - Reasoning 설정을 참고하세요.
모델파라미터기본 reasoning설정 방법
openai/gpt-oss-120breasoningmedium{ “effort”: “low” } / { “effort”: “medium” } (기본) / { “effort”: “high” }
기타 모델chat_template_kwargs모델마다 상이Chat Completions API - Reasoning 설정 참고
표. Responses API - 모델별 Reasoning 설정
배경색 변경
curl -X 'POST' \
   {Simple AI Inference 엔드포인트}/v1/responses \
  -H 'Authorization: bearer sai-xxxxxxx...' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "openai/gpt-oss-120b",
    "input": "복잡한 수학 문제를 풀어주세요.",
    "reasoning": {
      "effort": "high"
    }
  }'
curl -X 'POST' \
   {Simple AI Inference 엔드포인트}/v1/responses \
  -H 'Authorization: bearer sai-xxxxxxx...' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "openai/gpt-oss-120b",
    "input": "복잡한 수학 문제를 풀어주세요.",
    "reasoning": {
      "effort": "high"
    }
  }'
코드 블럭. Responses API Reasoning 설정 Example

참고

Tokenize API

POST /tokenize

개요

Tokenize API는 텍스트를 토큰 ID로 변환합니다. Completion 방식(prompt 기반)과 Chat 방식(messages 기반) 두 가지 요청 타입을 지원합니다. vLLM의 Tokenize API와 호환됩니다.

Request

Context

KeyTypeDescriptionExample
Base URLstringAPI 요청을 위한 Simple AI Inference URLSimple AI Inference 엔드포인트
Request MethodstringAPI 요청에 사용되는 HTTP 메서드POST
Headersobject요청 시 필요한 헤더 정보{ “Content-Type”: “application/json”, “Authorization”: “bearer sai-xxxxxxx…” }
Body Parametersobject요청 본문에 포함되는 파라미터{ “model”: “openai/gpt-oss-120b”, “prompt”: “Hello, world!” }
표. Tokenize API - Context

Path Parameters

NametypeRequiredDescriptionDefault valueBoundary valueExample
None
표. Tokenize API - Path Parameters

Query Parameters

NametypeRequiredDescriptionDefault valueBoundary valueExample
None
표. Tokenize API - Query Parameters

Body Parameters - 공통

NameName SubtypeRequiredDescriptionDefault valueBoundary valueExample
model-string토큰화에 사용할 모델을 지정“openai/gpt-oss-120b”
표. Tokenize API - Body Parameters (공통)

Body Parameters - Completion 방식 (prompt 기반)

NameName SubtypeRequiredDescriptionDefault valueBoundary valueExample
prompt-string토큰화할 텍스트“Hello, world!"
add_special_tokens-booleantrue이면 특수 토큰(BOS 등)을 프롬프트에 추가truetrue / falsetrue
return_token_strs-booleantrue이면 토큰 ID에 해당하는 토큰 문자열도 함께 반환falsetrue / falsetrue
표. Tokenize API - Body Parameters (Completion 방식)

Body Parameters - Chat 방식 (messages 기반)

NameName SubtypeRequiredDescriptionDefault valueBoundary valueExample
messagesrolestring대화 내역을 포함하는 메시지 리스트[{ “role”: “user”, “content”: “hi” }]
add_generation_prompt-booleantrue이면 chat template에 생성 프롬프트를 추가. continue_final_message와 동시에 true로 설정 불가truetrue / falsetrue
continue_final_message-booleantrue이면 마지막 메시지가 EOS 없이 열린 형태로 포맷됨. 모델이 새 메시지를 시작하는 대신 해당 메시지를 이어감. add_generation_prompt와 동시에 true로 설정 불가falsetrue / falsefalse
add_special_tokens-booleantrue이면 chat template가 추가하는 특수 토큰 외에 BOS 등의 특수 토큰을 추가로 삽입. 대부분의 모델은 chat template가 특수 토큰을 처리하므로 기본값 false 사용 권장falsetrue / falsefalse
return_token_strs-booleantrue이면 토큰 ID에 해당하는 토큰 문자열도 함께 반환falsetrue / falsetrue
chat_template-string변환에 사용할 Jinja 템플릿. 토크나이저에 정의되지 않은 경우 제공 필요null
chat_template_kwargs-object템플릿 렌더러에 전달할 추가 키워드 인자null{ “add_generation_prompt”: true }
tools-array모델이 호출할 수 있는 Tool의 리스트null
표. Tokenize API - Body Parameters (Chat 방식)

Example

배경색 변경
curl -X 'POST' \
  {Simple AI Inference 엔드포인트}/tokenize \
  -H 'Authorization: bearer sai-xxxxxxx...' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "openai/gpt-oss-120b",
    "prompt": "Hello, world!"
  }'
curl -X 'POST' \
  {Simple AI Inference 엔드포인트}/tokenize \
  -H 'Authorization: bearer sai-xxxxxxx...' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "openai/gpt-oss-120b",
    "prompt": "Hello, world!"
  }'
curl -X 'POST' \
  {Simple AI Inference 엔드포인트}/tokenize \
  -H 'Authorization: bearer sai-xxxxxxx...' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "openai/gpt-oss-120b",
    "messages": [
      {
        "role": "user",
        "content": "hi"
      }
    ]
  }'
curl -X 'POST' \
  {Simple AI Inference 엔드포인트}/tokenize \
  -H 'Authorization: bearer sai-xxxxxxx...' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "openai/gpt-oss-120b",
    "messages": [
      {
        "role": "user",
        "content": "hi"
      }
    ]
  }'
코드 블럭. Tokenize API Request Example

Response

200 OK

NameTypeDescription
countinteger토큰화된 토큰의 개수
max_model_leninteger모델이 지원하는 최대 토큰 길이
tokensarray토큰화된 토큰 ID 목록
token_strsarray or null토큰 ID에 해당하는 토큰 문자열 목록(return_token_strs가 true인 경우에만 반환)
표. Tokenize API - 200 OK

Error Code

HTTP status codeErrorCode 설명
400Bad Request (model 필드 누락, request body 누락 등)
404Model Not Found (지원하지 않는 모델)
500Internal Server Error
표. Tokenize API - Error Code

Example

배경색 변경
{
  "max_model_len": 1024,
  "count": 6,
  "tokens": [638357778, 638357778, 399020470, 1618501362, 2382766391, 2765235376],
  "token_strs": null
}
{
  "max_model_len": 1024,
  "count": 6,
  "tokens": [638357778, 638357778, 399020470, 1618501362, 2382766391, 2765235376],
  "token_strs": null
}
{
  "max_model_len": 1024,
  "count": 6,
  "tokens": [638357778, 638357778, 399020470, 1618501362, 2382766391, 2765235376],
  "token_strs": ["<|im_start|>", "user", "<|im_sep|>", "hi", "<|im_end|>", ""]
}
{
  "max_model_len": 1024,
  "count": 6,
  "tokens": [638357778, 638357778, 399020470, 1618501362, 2382766391, 2765235376],
  "token_strs": ["<|im_start|>", "user", "<|im_sep|>", "hi", "<|im_end|>", ""]
}
코드 블럭. Tokenize API Response Example

참고

Models API

GET /v1/models

개요

Models API는 Simple AI Inference 모델의 목록을 반환합니다. OpenAI의 Models API와 호환됩니다.

Request

Context

KeyTypeDescriptionExample
Base URLstringAPI 요청을 위한 Simple AI Inference URLSimple AI Inference 엔드포인트
Request MethodstringAPI 요청에 사용되는 HTTP 메서드GET
Headersobject요청 시 필요한 헤더 정보{ “Authorization”: “bearer sai-xxxxxxx…” }
Body Parameters--GET 요청이므로 Body가 없습니다.
표. Models API - Context

Path Parameters

NametypeRequiredDescriptionDefault valueBoundary valueExample
None
표. Models API - Path Parameters

Query Parameters

NametypeRequiredDescriptionDefault valueBoundary valueExample
None
표. Models API - Query Parameters

Body Parameters

GET 요청이므로 Body가 없습니다.

Example

배경색 변경
curl -X 'GET' \
  {Simple AI Inference 엔드포인트}/v1/models \
  -H 'Authorization: bearer sai-xxxxxxx...'
curl -X 'GET' \
  {Simple AI Inference 엔드포인트}/v1/models \
  -H 'Authorization: bearer sai-xxxxxxx...'
코드 블럭. Models API Request Example

Response

200 OK

NameTypeDescription
objectstring응답 객체의 타입(“list”)
dataarray모델 객체 목록
data[].idstring모델의 식별자
data[].objectstring객체의 타입(“model”)
data[].createdinteger모델이 생성된 시각(Unix timestamp, 초 단위)
data[].owned_bystring모델의 소유자
표. Models API - 200 OK

Error Code

HTTP status codeErrorCode 설명
401Unauthorized (apikey 누락 또는 유효하지 않음)
500Internal Server Error
표. Models API - Error Code

Example

배경색 변경
{
  "data": [
    {
      "id": "openai/gpt-oss-120b",
      "created": 1780979126,
      "object": "model",
      "owned_by": "SCP Simple AI Inference"
    },
    {
      "id": "Qwen/Qwen3-VL-Embedding-8B",
      "created": 1781512915,
      "object": "model",
      "owned_by": "SCP Simple AI Inference"
    },
    {
      "id": "Qwen/Qwen3-VL-Reranker-8B",
      "created": 1781512915,
      "object": "model",
      "owned_by": "SCP Simple AI Inference"
    }
  ],
  "object": "list"
}
{
  "data": [
    {
      "id": "openai/gpt-oss-120b",
      "created": 1780979126,
      "object": "model",
      "owned_by": "SCP Simple AI Inference"
    },
    {
      "id": "Qwen/Qwen3-VL-Embedding-8B",
      "created": 1781512915,
      "object": "model",
      "owned_by": "SCP Simple AI Inference"
    },
    {
      "id": "Qwen/Qwen3-VL-Reranker-8B",
      "created": 1781512915,
      "object": "model",
      "owned_by": "SCP Simple AI Inference"
    }
  ],
  "object": "list"
}
코드 블럭. Models API Response Example

참고

1.4 - Data Privacy

데이터 개인정보 보호 및 보안

Simple AI Inference는 고객 데이터의 기밀성과 보안을 중요한 원칙으로 삼고 서비스를 운영합니다.
서비스를 통해 전달되는 추론 요청과 응답 데이터는 AI 추론 기능을 제공하고 서비스 운영에 필요한 범위 내에서만 처리됩니다. 해당 데이터는 서비스 제공 목적 외의 용도로 활용되지 않습니다.

Simple AI Inference는 다음 원칙을 준수합니다.

  • 고객의 요청 및 응답 데이터는 서비스 제공을 위한 처리 목적에 한하여 사용됩니다.
  • 고객의 요청 및 응답 내용을 고객의 동의 없이 제3자에게 제공하거나 공유하지 않습니다.
  • 고객의 요청 및 응답 데이터는 AI 모델의 학습 또는 성능 개선을 위한 학습 데이터로 사용하지 않습니다.

1.5 - Release Note

Simple AI Inference

2026.07.16
NEW 서비스 정식 출시
  • Simple AI Inference 서비스를 정식 출시하였습니다.
    • 다양한 오픈 소스 LLM 모델을 API를 통해 서버리스로 이용할 수 있습니다.
    • Samsung Cloud Platform에서 Virtual Server, GPU Server, Kubernetes Engine 자원을 생성한 후, 해당 자원에서 LLM을 이용할 수 있습니다.

2 - Simple AI Training

2.1 - Overview

서비스 개요

Simple AI Training은 데이터 과학자와 머신러닝 엔지니어가 인프라 관리 부담 없이 대규모로 모델을 학습시킬 수 있는 완전 관리형 AI Training 서비스입니다. Simple AI Training 서비스를 통해 환경을 위한 별도의 AI 인프라, 플랫폼 없이 데이터와 학습 코드만 준비하여 손쉽게 모델 학습을 처리하고 결과를 도출할 수 있습니다.

특장점

  • 인프라 관리의 복잡성 제거: Simple AI Training의 서비스 백그라운드에서 서비스를 위한 요소를 자동으로 구성하고 서비스 종료 후 자원을 회수하여 별도의 인프라 운영이 필요하지 않습니다.
  • 손쉽고 빠른 모델 학습: 복잡한 명령어(CLI) 대신 웹 콘솔 인터페이스를 통해 몇 번의 클릭만으로 모델 학습 작업을 실행할 수 있습니다. 사용자는 학습 스크립트와 데이터가 위치한 스토리지 위치 및 GPU 인스턴스만 지정하면 됩니다.
  • 보안성 높은 데이터 퍼리: 클라우드 내 데이터 저장소(Object Storage 등)와 직접 연동되어 외부 유출 걱정 없이 보안이 유지된 상태로 대용량 데이터를 처리합니다.
  • 안정적인 모델 학습: 학습 도중 인프라 오류가 발생하더라도 시스템이 자동으로 장애를 탐지하고 복구하여 중단 없는 학습 환경을 제공합니다.
  • 효율적인 비용 관리: 우선순위가 낮은 학습에 대해 유휴 GPU를 사용하거나 Samsung Cloud Platform이 Spot 중단 및 재개를 자동으로 관리하여 비용 효율적인 학습이 가능합니다.

서비스 구성도

구성도
그림. Simple AI Training 구성도

제공 기능

Simple AI Training는 다음과 같은 기능을 제공하고 있습니다.

  • 서버리스 환경 제공: 인프라 설정, 데이터 로딩, 모델 학습, 결과물 저장까지 모든 과정을 자동화하여 학습에만 집중할 수 있습니다.
  • 분산 학습 및 Warm Pool 지원: 대규모 모델이나 대용량 데이터셋을 여러 인스턴스에 자동으로 분산하고 연속적인 훈련 작업 시에는 인스턴스를 즉시 재사용하여 인프라 프로비저닝 시간을 단축합니다.
  • 커스텀 컨테이너 지원: 사용자의 Docker 컨테이너 이미지를 가져와 학습할 수 있습니다(BYOC: Bring Your Own Container).
  • 모델 훈련 가용성: GPU Failover, Checkpointing 기능을 지원하여 모델 훈련을 원활하게 진행할 수 있습니다.
    • GPU Failover: 학습 도중 GPU 오류 발생 시 시스템이 자동으로 장애를 탐지 및 복구하여 오류로 인한 중단을 방지합니다.
    • Curcurrent Checkpointing: 학습 중간 결과물을 Object Storage에 저장하여 장애 발생 시 체크포인트부터 다시 학습을 재개할 수 있습니다.
  • 안전한 데이터 접근: 클라우드 내 데이터 저장소(Object Storage)와 연동되어 데이터를 외부 유출 걱정없이 보안이 유지된 상태로 처리할 수 있습니다.
  • 다양한 요금제 제공: 다양한 요금제를 제공하여 비용을 절감하고 효율적인 학습을 수행할 수 있습니다.
안내
커스텀 컨테이너 기능은 2026년 9월 제공 예정입니다.

제공 서버

Simple AI Training에서는 g2 서버 타입(H100)과 g3 서버 타입(B300)을 제공합니다.
서버 타입에 대한 자세한 사양은 서버 타입을 참고하세요.

구분인스턴스 타입
g2at.g2v12h1, at.g2v24h2, at.g2v48h4, at.g2v96h8, at.g2.spot
g3at.g3v16b1, at.g3v16b2, at.g3v16b4, at.g3v16b8, at.g3.spot
표. Simple AI Training 제공 서버

리전별 제공 현황

Simple AI Training 서비스를 제공하는 리전은 다음과 같습니다.

리전제공 여부
한국 서부(kr-west1)제공
한국 동부(kr-east1)미제공
한국 남부1(kr-south1)미제공
한국 남부2(kr-south2)미제공
한국 남부3(kr-south3)미제공
표. Simple AI Training 리전별 제공 현황

선행 서비스

해당 서비스를 생성하기 전에 미리 구성되어 있어야 하는 서비스 목록입니다. 자세한 내용은 각 서비스 별로 제공되는 가이드를 참고하여 사전에 준비하세요.

서비스 카테고리서비스상세 설명
StorageFile Storage네트워크 연결을 통하여 다수의 클라이언트 서버가 파일을 공유하는 스토리지
StorageObject Storage데이터 저장 및 검색에 용이한 객체 스토리지
ContainerContainer Registry컨테이너 이미지를 손쉽게 저장, 관리, 공유하는 서비스
표. Simple AI Training 선행 서비스

2.1.1 - 서버 타입

Simple AI Training은 제공하는 GPU Type에 따라 구분되며, Training Job을 생성할 때 선택하는 서버 타입에 따라 Simple AI Training에 사용되는 GPU가 결정됩니다.
Simple AI Training에서 실행하려는 작업의 사양에 따라 서버 타입을 선택하세요.
Simple AI Training에서 지원하는 서버 타입은 다음 형식과 같습니다.

at.g3v16b1
구분
예시상세 설명
서비스구분atSimple AI Training 서비스를 의미
서버 세대g3제공하는 서버 구분과 세대
  • 영문은 서버 사양을 의미
    • g: GPU 서버 사양을 의미
  • 숫자는 세대를 의미
    • 3은 3세대를 의미
CPUv16vCore 개수
  • v16: 할당 vCore는 가상 코어
GPUb1GPU 종류 및 수량
  • 영문은 GPU 종류를 의미
    • b: GPU 종류
  • 숫자는 GPU 수량을 의미
    • 8: GPU 수량
표. Simple AI Training 서버 타입 형식

g2 서버 타입

g2 서버 타입은 NVIDIA H100 SXM GPU를 사용하는 GPU Bare Metal Server로 대규모 고성능 AI 연산에 적합합니다.

  • 8개의 NVIDIA Hopper Architecture 기반 H100 GPU 제공
  • GPU 당 1,979 TFLOPS FP8 Tensor Core 성능 제공, 989 TFLOPS FP16 Tensor Core 성능 제공
  • 최대 96개의 vCPU 및 2,048 GB의 메모리를 지원
  • 최대 1,600 Gb/s NVIDIA InfiniBand RDMA 네트워크 지원
  • 최대 100 Gbps의 서비스 네트워크
  • 노드 내 NVSwitch를 통한 900 GB/s의 GPU P2P 통신
인스턴스 구분vCPUMemoryGPULocal Disk
at.g2v12h112234110 Gi
at.g2v24h224468220 Gi
at.g2v48h448936440 Gi
at.g2v96h8961,872880 Gi
at.g2.spot12234110 Gi
표. Multi-node GPU Cluster > H100 서버 타입

g3 서버 타입

g3 서버 타입은 NVIDIA B300 SXM GPU를 사용하는 GPU Bare Metal Server로 대규모 고성능 AI 연산 뿐만 아니라 생성형 AI를 위한 LLM 추론 및 AI 배포에 적합합니다.

  • 8개의 NVIDIA Blackwell Ultra Architecture 기반 B300 GPU 제공
  • GPU 당 13.5 PFLOPS FP4 Tensor Core, 4.5 PFLOPS FP8 Tensor Core 성능 제공
  • 최대 128개의 vCPU 및 4,096 GB의 메모리를 지원
  • 최대 6,400 Gb/s NVIDIA InfiniBand RDMA 네트워크 지원
  • 최대 100 Gbps의 서비스 네트워크
  • 노드 내 NVSwitch를 통한 1.8 TB/s의 GPU P2P 통신
인스턴스 구분vCPUMemoryGPULocal Disk
at.g3v16b116480110 Gi
at.g3v32b232960220 Gi
at.g3v64b4641,920440 Gi
at.g3v128b81283,840880 Gi
at.g3.spot16480110 Gi
표. Multi-node GPU Cluster > B300 서버 타입

2.1.2 - ServiceWatch 지표

Simple AI Training은 ServiceWatch로 지표를 전송합니다. 기본 모니터링으로 제공되는 지표는 5분 주기로 수집된 데이터입니다.

참고
ServiceWatch에서 지표를 확인하는 방법은 ServiceWatch 가이드를 참고하세요.

기본 지표

다음은 네임스페이스 Simple AI Training에 대한 기본 지표입니다.
아래에서 지표명이 굵은 글씨로 표기된 지표는 Simple AI Training에서 제공하는 기본 지표 중 주요 지표로 선정한 지표입니다.
주요 지표는 ServiceWatch에서 서비스별로 자동으로 구축되는 서비스 대시보드를 구성하는데 활용됩니다.
각 지표는 해당 지표를 조회할 때 어떤 통계값으로 조회하는 것이 의미있는지 의미 있는 통계값을 사용자 가이드를 통해 안내하고 있으며, 의미있는 통계 중에서 굵은 글씨로 표기된 통계값이 주요 통계값입니다.

서비스 대시보드 또는 모니터링 탭에서는 주요 지표를 주요 통계값을 통해 조회할수 있습니다. 또는 Simple AI Training 상세 페이지의 모니터링 탭에서도 주요 지표에 대해 확인할 수 있습니다.
ServiceWatch의 지표 메뉴에서 GPU Device별 사용률도 확인할 수 있습니다.

성능 항목(지표명)상세 설명단위의미있는 통계
CPU UsageTraining Job Pod에서 최근 5분 동안 사용한 평균 CPU Core 수Cores
  • 합계
  • 평균
  • 최대
  • 최저
GPU UtilizationTraining Job에서 사용 중인 GPU의 사용률Percent
  • 평균
  • 최대
  • 최저
Memory UsageTraining Job Pod에서 현재 사용 중인 메모리 사용Bytes
  • 합계
  • 평균
  • 최대
  • 최저
표. Simple AI Training 기본 지표

2.2 - How-to guides

Simple AI Training 서비스의 Training Job을 생성하여 AI 학습 방식을 선택하고 학습을 진행할 수 있습니다.

Training Job 생성하기

Simple AI Training 서비스를 이용하려면 먼저 Training Job을 생성해야 합니다. Trainging Job을 생성하려면 다음 절차를 따르세요.

  1. 모든 서비스 > AI/ML > Simple AI Training 메뉴를 클릭하세요. Simple AI Training의 Service Home 페이지로 이동합니다.

  2. Service Home 페이지에서 Training Job 생성 버튼을 클릭하세요. Training Job 생성 페이지로 이동합니다.

  3. Training Job 생성 페이지에서 서비스 생성에 필요한 정보들을 입력하고, 상세 옵션을 선택하세요.

    • 필수 정보 입력 영역에서 Training Job 관련 필수 정보를 선택하세요.
      구분
      필수 여부
      상세 설명
      학습 형태필수학습 방식을 선택
      • On-Demand Training: 학습을 원하는 시점에 서버를 선점하여 안정적으로 학습 진행
        • Concurrent Checkpointing 기능 적용되어 효율적인 체크포인트 저장 지원
      • Spot Training: 우선 순위가 낮은 학습에 대해 유휴 GPU를 사용하여 비용 효율적인 학습을 진행
        • Concurrent Checkpointing 및 Mixed workload 기능 적용되어 학습의 연속성(자동 중단 및 시작) 지원
      Training Job명필수Training Job 이름을 입력
      • 영문 소문자, 숫자, 특수문자(-.)를 사용하여 3 ~ 63자 이내로 입력
      • 이름의 시작과 끝에 영문 소문자 또는 숫자 필수
      분산 Framework필수분산 Framework를 버전 선택
      • PyTorch, DeepSpeed 선택 가능
      표. Training Job 필수 정보 입력 항목
    • 서비스 정보 입력 영역에서 Training Job 생성에 필요한 옵션을 선택하세요.
      구분
      필수 여부
      상세 설명
      Job Failover선택Job Failover 기능의 사용 여부 선택
      • Spot Training 기능 사용 시 Job Failover 사용 불가
      리소스 할당필수학습에 활용할 GPU 수 및 메모리 크기 선택
      노드 수필수분산 학습 규모를 설정
      • 2노드 이상 부터 분산 학습 가능
      Shared Memory필수분산 학습, 분산 데이터 처리를 위해 프로세스 간 공유할 메모리를 설정
      표. Training Job 서비스 정보 입력 항목
    • AI Training Image 정보 입력 영역에서 서비스 생성에 필요한 옵션을 선택하세요.
      구분
      필수 여부
      상세 설명
      AI Training Image URL필수사용자의 컨테이너 저장소(SCR, Docker Hub 등) 주소를 입력
      사용자 ID선택이미지 저장소의 사용자 ID
      비밀번호필수이미지 저장소의 비밀번호
      표. Training Job AI Training Image 정보 입력 입력 항목
    • 학습 Command 및 볼륨 정보 입력 영역에서 필요한 정보를 입력 또는 선택하세요.
      구분
      필수 여부
      상세 설명
      스토리지 연결선택추가 볼륨의 사용 여부를 선택
      • 사용 시 추가 보륨 Mount 경로 및 학습 스크립트 URL 입력 필
      • File Storage Volume Mount Path: File Storage 연결 시 사용할 데이터 경로(예시: /root)
      • Training Script 가져오기(Object Storage): Object Storage 연결 시 스크립트 URL 입력
      Command필수Command 정보를 3 ~ 1,024 이내로 입
      표. Training Job AI Training Image 정보 입력 입력 항목
    • 추가 정보 입력 영역에서 필요한 정보를 입력 또는 선택하세요.
      구분
      필수 여부
      상세 설명
      태그선택태그 추가
      • 자원 당 최대 50개까지 추가 가능
      • 태그 추가 버튼을 클릭한 후 Key, Value 값을 입력 또는 선택
      표. Training Job 학습 Command 및 볼륨 정보 입력 항목
  4. 요약 패널에서 생성한 상세 정보를 확인하고, 생성 버튼을 클릭하세요.

  5. 생성을 알리는 팝업창이 열리면 확인 버튼을 클릭하세요.

    • 생성이 완료되면, Training Job 목록 페이지에서 생성한 자원을 확인하세요.

Training Job 상세 정보 확인하기

Training Job 서비스의 전체 자원 목록과 상세 정보를 확인하고 수정할 수 있습니다.
Training Job 상세정보를 확인하려면 다음 절차를 따르세요.

  1. 모든 서비스 > AI/ML > Simple AI Training 메뉴를 클릭하세요. Simple AI Training의 Service Home 페이지로 이동합니다.
  2. Service Home 페이지에서 Training Job 메뉴를 클릭하세요. Training Job 목록 페이지로 이동합니다.
  3. Training Job 목록 페이지에서 상세 정보를 확인할 자원을 클릭하세요. Training Job 상세 페이지로 이동합니다.
    • Training Job 상세 페이지는 상세 정보, 모니터링, 로그, 태그 탭으로 구성됩니다.
      구분상세 설명
      서비스 상태CloudML의 상태
      • Creating: 생성 중
      • Deployed: 생성 완료/정상 작동 중
      • Updating: 설정 업데이트 중
      • Terminating: 삭제 중
      • Error: 에러 발생
      Training Job 삭제서비스를 해지하는 버튼
      표. Training Job 상세 페이지 항목

상세 정보

Training Job 목록 페이지에서 선택한 자원의 상세 정보를 확인할 수 있습니다.

구분상세 설명
서비스서비스명
자원 유형자원 유형
SRNSamsung Cloud Platform에서의 고유 자원 ID
자원명자원 이름
자원 ID서비스에서의 고유 자원 ID
생성자서비스를 생성한 사용자
생성 일시서비스를 생성한 일시
수정자서비스 정보를 수정한 사용자
수정 일시서비스 정보를 수정한 일시
학습 형태AI Training 학습 방식
Training Job명Training Job 이름
분산 Framework분산 Framework 종류
Job FailoverJob Failover 기능 사용 여부
리소스 할당리소스로 할당된 GPU 및 메모리 정보
노드 수노드 수
Shared Memory프로세스 간 공유한 메모리 정보
CommandTraining Job 생성 시 입력한 Command 정보
Image URL사용자의 컨테이너 저장소 주소
File Storage Volume Mount Point추가 볼륨 사용 시 연결한 File Storage Mount 경로
Traing Script URL추가 볼륨 사용 시 연결한 Object Storage 스크립트 URL
표. Training Job 상세 정보 항목

모니터링

Training Job 목록 페이지에서 선택한 자원의 모니터링 정보를 확인할 수 있습니다.

구분상세 설명
모니터링ServiceWatch 서비스의 모니터링 정보를 연계하여 표시
  • 모니터링 정보 클릭 시 ServiceWatch의 모니터링 상세 페이지로 이동
표. Training Job 모니터링 탭 항목

참고
Simple AI Training의 모니터링 지표는 ServiceWatch 지표를 참고하세요.

로그

Training Job 목록 페이지에서 선택한 자원의 로그 정보를 확인할 수 있습니다.

구분상세 설명
Job 로그ServiceWatch 서비스의 로그 정보를 연계하여 표시
  • 로그 정보 클릭 시 ServiceWatch의 로그 그룹 상세 페이지로 이동
표. Training Job 로그 탭 항목

참고
Training Job의 로그는 ServiceWatch 서비스와 연계되어 제공됩니다. Training Job 로그를 확인하는 방법은 Training Job 로그 확인하기를 참고하세요.

태그

Training Job 목록 페이지에서 선택한 자원의 태그 정보를 확인하고, 추가하거나 변경 또는 삭제할 수 있습니다.

구분상세 설명
태그 목록태그 목록
  • 태그의 Key, Value 정보 확인 가능
  • 태그는 자원 당 최대 50개까지 추가 가능
  • 태그 입력 시 기존에 생성된 Key와 Value 목록을 검색하여 선택
표. Training Job 태그 탭 항목

Training Job 로그 확인하기

ServiceWatch 서비스에서 Training Job의 로그를 확인할 수 있습니다.
Training Job의 로그를 확인하려면 다음 절차를 따르세요.

  1. 모든 서비스 > AI/ML > Simple AI Training 메뉴를 클릭하세요. Simple AI Training의 Service Home 페이지로 이동합니다.
  2. Service Home 페이지에서 Training Job 메뉴를 클릭하세요. Training Job 목록 페이지로 이동합니다.
  3. Training Job 목록 페이지에서 로그를 확인할 자원을 선택하세요. Training Job 상세 페이지로 이동합니다.
  4. Training Job 상세 페이지에서 로그 탭을 클릭하세요. 해당 Job의 로그 정보가 표시됩니다.
  5. 로그 정보의 Training Job명 하단의 이름을 클릭하세요. ServiceWatch로그 그룹 상세 페이지로 이동합니다.
  6. 로그 그룹 상세 페이지에서 로그 스트림 탭을 클릭하세요. 로그 스트림 목록이 표시됩니다.
  7. 확인할 로그 스트림 이름(예시: master)을 클릭하세요. 해당 스트림의 로그가 시간순으로 표시됩니다.
    • Failover가 발생한 경우, 장애로 중단되었던 학습의 로그와 재배치 후 다시 시작된 학습의 로그가 하나의 스트림에 함께 기록됩니다.
    • 학습 시작 시 출력되는 초기화 로그(예시: Starting dataset initialization)가 두 번 이상 표시되면, 학습이 재배치되어 다시 시작되었음을 확인할 수 있습니다.

Training Job 삭제하기

사용하지 않는 Training Job을 삭제할 수 있습니다. Training Job을 삭제하려면 다음 절차를 따르세요.

  1. 모든 서비스 > AI/ML > Simple AI Training 메뉴를 클릭하세요. Simple AI Training의 Service Home 페이지로 이동합니다.
  2. Service Home 페이지에서 Training Job 메뉴를 클릭하세요. Training Job 목록 페이지로 이동합니다.
  3. Training Job 목록 페이지에서 삭제할 자원을 선택한 후, 목록 상단의 삭제 버튼을 클릭하세요.
    • 삭제할 자원을 클릭하여 Training Job 상세 페이지로 이동한 후, 개별적으로 삭제할 수도 있습니다.
  4. 삭제를 알리는 팝업창이 열리면 확인 버튼을 클릭하세요.

Training Workspace 사용하기

Training Workspace를 사용하여 Simple AI Training 서비스를 이용할 수 있습니다.

Training Workspace 생성하기

Training Workspace를 생성하려면 다음 절차를 따르세요.

  1. 모든 서비스 > AI/ML > Simple AI Training 메뉴를 클릭하세요. Simple AI Training의 Service Home 페이지로 이동합니다.

  2. Service Home 페이지에서 Training Workspace 메뉴를 클릭하세요. Training Workspace 목록 페이지로 이동합니다.

  3. Training Workspace 목록 페이지에서 서비스 생성 버튼을 클릭하세요. Training Workspace 생성 페이지로 이동합니다.

  4. 서비스 생성에 필요한 정보들을 입력하고, 상세 옵션을 선택하세요.

    • 서비스 정보 입력 영역에서 Training Workspace 생성에 필요한 옵션을 선택하세요.
      구분
      필수 여부
      상세 설명
      Training Workspace명필수Training Workspace 이름을 입력
      • 영문 소문자, 숫자, 특수문자(-.)를 사용하여 63자 이내로 입력
      리소스 할당필수학습에 활용할 GPU 수 및 메모리 크기 선택
      노드 수필수분산 학습 규모를 설정
      • 2노드 이상 부터 분산 학습 가능
      약정 기간필수서비스 이용 약정 기간을 선택
      표. Training Workspace 서비스 정보 입력 항목
  5. 요약 패널에서 생성한 상세 정보와 예상 청구 금액을 확인하고, 생성 버튼을 클릭하세요.

  6. 생성을 알리는 팝업창이 열리면 확인 버튼을 클릭하세요.

    • 생성이 완료되면, Training Workspace 목록 페이지에서 생성한 자원을 확인하세요.

Training Workspace 수정하기

Training Workspace의 노드 수를 수정할 수 있습니다. Training Workspace를 수정하려면 다음 절차를 따르세요.

  1. 모든 서비스 > AI/ML > Simple AI Training 메뉴를 클릭하세요. Simple AI Training의 Service Home 페이지로 이동합니다.
  2. Service Home 페이지에서 Training Workspace 메뉴를 클릭하세요. Training Workspace 목록 페이지로 이동합니다.
  3. Training Workspace 목록 페이지에서 수정할 자원의 더보기 > 수정 버튼을 클릭하세요. Training Workspace 수정 페이지로 이동합니다.
  4. Training Workspace 수정 페이지에서 노드 수를 확인하고 수정하세요.
  5. 수정이 완료되면 확인 버튼을 클릭하세요.

Training Workspace 삭제하기

사용하지 않는 Training Workspace를 삭제할 수 있습니다. Training Workspace를 삭제하려면 다음 절차를 따르세요.

  1. 모든 서비스 > AI/ML > Simple AI Training 메뉴를 클릭하세요. Simple AI Training의 Service Home 페이지로 이동합니다.
  2. Service Home 페이지에서 Training Workspace 메뉴를 클릭하세요. Training Workspace 목록 페이지로 이동합니다.
  3. Training Workspace 목록 페이지에서 삭제할 자원을 선택한 후, 목록 상단의 서비스 해지 버튼을 클릭하세요.
    • 삭제할 자원의 더보기 > 서비스 해지 버튼을 클릭하여 개별적으로 삭제할 수도 있습니다.
  4. 삭제를 알리는 팝업창이 열리면 확인 버튼을 클릭하세요.

2.2.1 - Job Failover 사용하기

Job Failover는 On-Demand Training으로 학습을 진행하는 도중 GPU 등 하드웨어 장애가 발생하더라도 학습이 중단되지 않도록 정상 자원으로 자동 재배치하여 학습을 이어가는 기능입니다. Job Failover 기능을 사용하면 시스템 오류 및 하드웨어 장애 감지 시 사용자가 직접 장애를 확인하고 Job을 다시 생성할 필요 없이 학습의 연속성을 확보할 수 있습니다.

Job Failover 개요

Training Job 실행 중에는 학습이 배치된 노드에서 GPU 오류, 노드 장애 등 다양한 하드웨어 이상이 발생할 수 있습니다.
Job Failover 기능을 사용하면 이러한 하드웨어 장애가 감지되었을 때 시스템이 장애 노드를 회피하여 정상 자원으로 Training Job을 자동 재배치하고 학습을 재개합니다.
Job Failover의 주요 동작은 다음과 같습니다.

  • 장애 감지: 학습이 실행 중인 노드의 GPU 및 하드웨어 상태를 지속적으로 점검하여 이상을 감지합니다.
  • 자동 재배치: 하드웨어 장애로 판단되면 장애 노드를 제외하고 정상 노드로 Training Job을 재배치하여 학습을 다시 시작합니다.
  • 불필요한 재배치 방지: 하드웨어 장애가 아닌 사용자 코드 오류, 설정 오류 등은 Failover 대상에서 제외됩니다.
  • 재시도 횟수 제한: Failover는 정해진 최대 횟수(3회) 내에서만 수행되며, 이를 초과하면 학습이 실패로 종료됩니다.
Job Failover 사용 조건
  • Job Failover는 Training Job 생성 시 학습 형태를 On-Demand Training 타입으로 선택한 경우에만 사용할 수 있습니다. Spot Training 사용 시에는 Job Failover를 사용할 수 없습니다.
  • Job Failover 기능의 사용 여부는 Training Job 생성 시 서비스 정보 입력 영역의 Job Failover 항목에서 선택할 수 있습니다. 생성 이후에는 Training Job 상세 페이지의 상세 정보 탭에서 사용 여부를 확인할 수 있습니다.
안내
  • Failover로 학습이 다른 자원에 재배치되면 학습이 중단된 시점의 메모리 상태는 유지되지 않습니다. 학습을 이어서 진행하려면 공유 스토리지(File Storage, Object Storage)에 체크포인트를 저장하도록 학습 스크립트를 구성하는 것을 권장합니다.
  • Failover가 항상 즉시 실행을 보장하지는 않습니다.
    • Failover로 재배치되는 Job은 우선 순위가 높게 설정되어 대기 중인 다른 Job 보다 먼저 자원을 할당받아 실행됩니다.
    • 단, 재배치 시점에 이미 대기열에 들어와 있던 Job의 우선순위와 대기 순서에 따라 재배치되는 Job이 해당 Job들 보다 늦게 실행될 수 있습니다.
  • Job의 재배치 여부를 결정하기 위해 노드 상태를 점검하는 동안(최대 5분) Job이 Pending - failoverinprogress 상태에 머무를 수 있습니다.

오류 원인 점검

시스템은 학습 중단이 발생하면 노드의 GPU 및 하드웨어 상태를 점검하여, 그 원인이 하드웨어 장애인지 아니면 사용자 애플리케이션, 설정과 같은 하드웨어 이외의 문제인지 판단합니다.
Failover 수행 여부는 이 판단 결과에 따라 결정됩니다.

하드웨어 장애로 판단되는 경우

GPU를 정상적으로 사용할 수 없는 물리적, 하드웨어 수준의 오류가 감지되면 하드웨어 장애로 판단하여 Failover를 수행합니다.
이러한 오류는 해당 노드에서 학습을 계속할 수 없으므로 장애 노드를 제외하고 정상 자원으로 재배치하여 학습을 재개합니다. 하드웨어 장애로 판단되는 오류 예시는 다음과 같습니다.

XID 코드오류설명
48GPU 메모리(HBM) 복구 불가능 오류 (Uncorrectable Double Bit ECC)
  • GPU의 대용량 메모리에서 스스로 정정할 수 없는 손상이 발생한 경우
  • 해당 GPU의 연산 결과를 신뢰할 수 없어 계속 사용 불가
79GPU가 시스템에서 분리됨 (GPU fallen off the bus)
  • 시스템이 GPU 자체를 더 이상 인식하지 못하는 상태
  • GPU가 응답하지 않아 학습 진행 불가
94, 95GPU 내부 메모리(SRAM) 복구 불가능 오류
  • GPU 칩 내부의 고속 메모리에서 정정할 수 없는 오류가 발생
  • 하드웨어 손상 발생
-GPU 과열, 전원 공급 장치(PSU), PCIe 등 하드웨어 구성 요소 장애
  • 온도가 허용치를 초과하거나 전원 또는 연결 부품에 문제가 생긴 경우
  • GPU를 정상적으로 사용 불가
표. 하드웨어 장애로 판단되는 오류 예시
참고
XID 코드: NVIDIA GPU 드라이버가 오류 종류를 구분하기 위해 부여하는 번호로써, GPU 로그에서 오류 원인을 파악하는 데 참고할 수 있습니다.

내부 오류로 판단되는 경우

학습 중단의 원인이 하드웨어 장애가 아니라 사용자 애플리케이션 코드나 설정 문제로 판단되면, 재배치를 하더라도 동일한 문제가 반복될 가능성이 높으므로 Failover를 거부하고 internalerror 상태로 종료합니다. 내부 오류로 판단되는 오류 예시는 다음과 같습니다.

XID 코드오류설명
-메모리 부족으로 인한 강제 종료 (Out Of Memory)
  • 학습 프로그램이 할당된 GPU 또는 시스템 메모리보다 많은 메모리를 사용하려다 강제 종료된 경우
GPU 메모리 하드웨어 오류(XID 48)가 아닌 자원 부족 및 설정 문제그대로 재배치해도 동일하게 발생하므로 배치 크기(Batch size) 축소, 메모리 할당량 상향 등 학습 설정 조정 필요
31GPU 메모리 페이지 폴트
  • 학습 프로그램이 허용되지 않은 메모리 영역에 접근하려다 발생하는 오류
  • 대부분 코드의 버그가 원인
43GPU 처리 중단
  • 실행 중인 프로그램에서 오류가 발생해 GPU 작업이 중단된 경우
  • 애플리케이션 문제일 가능성이 높음
13그래픽·컴퓨트 엔진 예외
  • GPU에 전달된 명령이 잘못되어 발생하는 경우
  • 주로 학습 코드나 라이브러리 문제
-GPU 설정 경고, 소프트웨어 오류 등
  • 하드웨어 자체는 정상이나 설정·소프트웨어 수준의 문제
  • GPU 교체나 노드 재배치가 불필요
표. 내부 오류로 판단되는 오류 예시
참고
  • XID 코드: NVIDIA GPU 드라이버가 오류 종류를 구분하기 위해 부여하는 번호로써, GPU 로그에서 오류 원인을 파악하는 데 참고할 수 있습니다.
  • 이 경우에는 학습 스크립트와 실행 Command, 입력 데이터, 리소스 설정 등을 점검하세요. 로그 확인 방법에 대한 자세한 내용은 Job Failover 로그 확인하기를 참고하세요.

Job Failover 상태 확인하기

  1. 모든 서비스 > AI/ML > Simple AI Training 메뉴를 클릭하세요. Simple AI Training의 Service Home 페이지로 이동합니다.
  2. Service Home 페이지에서 Training Job 메뉴를 클릭하세요. Training Job 목록 페이지로 이동합니다.
  3. Training Job 목록 페이지에서 Job의 상태를 확인하세요.
    • Failover 사용 여부와 하드웨어 장애 판단 결과에 따른 상태 흐름은 다음과 같습니다.
      구분상세 설명
      Failover 성공하드웨어 장애가 감지되어 정상 자원으로 재배치가 완료된 상태
      • RunningPending - failoverinprogressRunning 순서로 상태가 변경되면 Failover가 정상적으로 수행되어 학습 재개 완료
      Failover 거부학습이 중단되었으나 하드웨어 장애 신호가 확인되지 않아 재배치 대상이 아니라고 판단된 상태
      • RunningPending - failoverinprogressPending - internalerror 순서로 상태가 변경되면 Failover가 거부
      • 사용자 코드 오류와 같이 하드웨어 이외의 원인일 수 있으므로 로그 확인 필요
      Failover 미설정Job Failover를 사용하지 않도록 설정한 상태
      • 학습 중단이 발생하면 재배치를 시도하지 않고 RunningFailed 순서로 학습을 종료
      표. Job Failover에 따른 상태 흐름
    • Failover 진행 중 표시되는 주요 상태값은 다음과 같습니다.
      상태상세 설명
      Pending - failoverinprogress하드웨어 장애를 감지하고 Failover 가능 여부를 판단하거나 정상 자원으로 재배치를 진행 중인 상태
      Pending - maxretriesexceededFailover 최대 시도 횟수를 초과하여 더 이상 재배치를 수행하지 않는 상태
      Pending - imagepullbackoff컨테이너 이미지를 불러오지 못해 학습을 시작할 수 없는 상태(이미지 URL 및 인증 정보 확인 필요)
      Pending - internalerror하드웨어 장애 신호가 확인되지 않는 등 Failover 대상이 아니라고 판단되어 재배치가 거부된 상태
      표. Job Failover 진행 중 주요 상태값

Job Failover 로그 확인하기

Failover가 발생한 경우, 장애로 중단된 이전 학습의 로그와 재배치 후에 재개된 학습의 로그를 하나의 로그 스트림에서 함께 확인할 수 있습니다.

참고
Training Job의 로그는 ServiceWatch 서비스와 연계되어 제공됩니다.
Training Job 로그를 확인하는 방법은 Training Job 로그 확인하기를 참고하세요.
Job Failover의 로그를 확인하려면 다음 절차를 따르세요.

  1. 모든 서비스 > AI/ML > Simple AI Training 메뉴를 클릭하세요. Simple AI Training의 Service Home 페이지로 이동합니다.
  2. Service Home 페이지에서 Training Job 메뉴를 클릭하세요. Training Job 목록 페이지로 이동합니다.
  3. Training Job 목록 페이지에서 로그를 확인할 자원을 선택하세요. Training Job 상세 페이지로 이동합니다.
  4. Training Job 상세 페이지에서 로그 탭을 클릭하세요. 해당 Job의 로그 정보가 표시됩니다.
  5. 로그 정보의 Training Job명 하단의 이름을 클릭하세요. ServiceWatch로그 그룹 상세 페이지로 이동합니다.
  6. 로그 그룹 상세 페이지에서 로그 스트림 탭을 클릭하세요. 로그 스트림 목록이 표시됩니다.
  7. 확인할 로그 스트림 이름(예시: master)을 클릭하세요. 해당 스트림의 로그가 시간순으로 표시됩니다.
    • Failover가 발생한 경우, 장애로 중단되었던 학습의 로그와 재배치 후 다시 시작된 학습의 로그가 하나의 스트림에 함께 기록됩니다.
    • 학습 시작 시 출력되는 초기화 로그(예시: Starting dataset initialization)가 두 번 이상 표시되면, 학습이 재배치되어 다시 시작되었음을 확인할 수 있습니다.

2.2.2 - Concurrent Checkpointing

Concurrent Checkpointing은 기존 방식과 달리 Forward/Backward 연산 중에도 체크포인트를 비동기적으로 저장하는 기능입니다.
따라서 이 기능을 사용하여 체크포인트 저장으로 인한 오버헤드를 줄여 전체 학습 시간을 효율적으로 단축하고, 예측 불가능한 학습 중단 발생 시 유실될 수 있는 학습 진행 상태를 자동으로 저장할 수 있습니다.

Concurrent Checkpointing 개요

Simple AI Training에서 제공하는 Training Job은 On-Demand Training 타입과 Spot Training 타입이 있습니다.
Concurrent Checkpointing은 두 가지 타입에서 모두 사용할 수 있으나 타입별로 기능의 활용 범위가 다릅니다. 타입별 활용 범위는 다음과 같습니다.

타입활용 범위
On-Demand Training
  • 체크포인트 비동기 저장 지원
  • 학습 체크포인트 자동 저장(학습 데이터 유실 방지)
  • 체크포인트 수동 로드 지원
Spot Training
  • 체크포인트 비동기 저장 지원
  • 학습 체크포인트 자동 저장(유휴 GPU 회수로 학습 중단 시 데이터 유실 방지)
  • 유휴 GPU 재할당으로 학습 재개 시 체크포인트 자동 로드 및 무중단 학습
표. Training Job 타입별 Concurrent Checkpointing 활용 범위

Concurrent Checkpointing 사용하기

사전 준비하기: 스크립트 작성

사용자는 Trainer, Concurrent Checkpoint의 save method를 동시에 사용할 수 있습니다.

참고
  • Concurrent Checkpoint가 저장하는 체크포인트는 safetensor format이 아닙니다. 따라서 추후 safetensor format이 필요하다면 Huggingface Trainer의 checkpointing 기능도 함께 사용하는 것을 권장합니다.
  • Concurrent Checkpoint가 TrainingArgument중 공유하는 것은 output_dir입니다.
  • Concurrent Checkpoint가 유지하는 checkpoint수는 최대 3개입니다.

Spot Training 사용법

Spot Training 사용 시 스크립트 예시는 다음과 같습니다.

|language = python | title = Training Script Example | collapse = true
배경색 변경
// transformers==5.10.2 기준으로 작성합니다.

import os
import torch
from transformers import (
    AutoTokenizer,
    AutoModelForCausalLM,
    Trainer,
    TrainingArguments,
    DataCollatorForLanguageModeling
)
from datasets import load_dataset
import json
from datastates.llm import DecoratedCheckpointing
import argparse
import logging
import time

def parse_args():
    parser = argparse.ArgumentParser()
    parser.add_argument(
        "--local_rank",
        type=int,
        default=-1,
        help="local rank passed from distributed launcher (Deepspeed, torchrun, etc.)"
    )
    return parser.parse_args()

if __name__ == "__main__":
    args = parse_args()

    model_path="/root/.cache/huggingface/hub/models--meta-llama--Llama-3.2-1B/snapshots/4e20de362430cd3b72f300e6b0f18e50e7166e08"

    # Load tokenizer and model
    tokenizer = AutoTokenizer.from_pretrained(model_path, local_files_only=True)

    # Set pad token to EOS if not already defined
    if tokenizer.pad_token is None:
        tokenizer.pad_token = tokenizer.eos_token

    # Load WikiText-2 dataset
    dataset = load_dataset("wikitext", "wikitext-2-raw-v1",cache_dir="/root/.cache/huggingface/datasets")

    # Tokenization function
    def tokenize_function(examples):
        return tokenizer(
            examples["text"],
            truncation=True,
            max_length=128,
            padding="max_length"
        )

    # Tokenize the dataset
    tokenized_dataset = dataset.map(
        tokenize_function,
        batched=True,
        remove_columns=["text"]
    )

    train_dataset = tokenized_dataset["train"]
    valid_dataset = tokenized_dataset["validation"]

    data_collator = DataCollatorForLanguageModeling(
        tokenizer=tokenizer,
        mlm=False  # Causal LM (not masked LM)
    )

    script_directory = os.path.dirname(os.path.abspath(__file__))
    ds_config_path = os.path.join(script_directory, "ds_config.json")

    training_args = TrainingArguments(
        output_dir="./results",
        num_train_epochs=3,
        per_device_train_batch_size=2,  # Adjust based on GPU memory
        gradient_accumulation_steps=4,  # Effective batch size = batch_size * gradient_accumulation_steps
        save_strategy="steps",
        save_steps=200,
        logging_steps=2,
        eval_strategy="steps",
        eval_steps=100,
        bf16=True,  # Enable BF16 mixed precision (use fp16 if unsupported)
        deepspeed=ds_config_path,  # Path to DeepSpeed config file
        report_to="none",
    )

    model = AutoModelForCausalLM.from_pretrained( model_path,  local_files_only=True, low_cpu_mem_usage=True, device_map=None)

    # Initialize Trainer
    trainer = Trainer(
        model=model,
        args=training_args,
        train_dataset=train_dataset,
        eval_dataset=valid_dataset,  # Optional: validation set for evaluation
        processing_class=tokenizer,
        data_collator=data_collator,
    )

       # ADD configuration for Concurrent CHECKPOINT ENGINE
    config = {
        "host_cache_size": 50,
        "parser_threads": 1,
        "pin_host_cache": True,
        "trainer": trainer,
    }

    ckpt_engine = DecoratedCheckpointing(runtime_config=config, rank=args.local_rank)

    resume_from_checkpoint=False

    if os.getenv("CKPT_LAST_STEP") != None :
        resume_from_checkpoint=True

    trainer.train(resume_from_checkpoint=resume_from_checkpoint)
// transformers==5.10.2 기준으로 작성합니다.

import os
import torch
from transformers import (
    AutoTokenizer,
    AutoModelForCausalLM,
    Trainer,
    TrainingArguments,
    DataCollatorForLanguageModeling
)
from datasets import load_dataset
import json
from datastates.llm import DecoratedCheckpointing
import argparse
import logging
import time

def parse_args():
    parser = argparse.ArgumentParser()
    parser.add_argument(
        "--local_rank",
        type=int,
        default=-1,
        help="local rank passed from distributed launcher (Deepspeed, torchrun, etc.)"
    )
    return parser.parse_args()

if __name__ == "__main__":
    args = parse_args()

    model_path="/root/.cache/huggingface/hub/models--meta-llama--Llama-3.2-1B/snapshots/4e20de362430cd3b72f300e6b0f18e50e7166e08"

    # Load tokenizer and model
    tokenizer = AutoTokenizer.from_pretrained(model_path, local_files_only=True)

    # Set pad token to EOS if not already defined
    if tokenizer.pad_token is None:
        tokenizer.pad_token = tokenizer.eos_token

    # Load WikiText-2 dataset
    dataset = load_dataset("wikitext", "wikitext-2-raw-v1",cache_dir="/root/.cache/huggingface/datasets")

    # Tokenization function
    def tokenize_function(examples):
        return tokenizer(
            examples["text"],
            truncation=True,
            max_length=128,
            padding="max_length"
        )

    # Tokenize the dataset
    tokenized_dataset = dataset.map(
        tokenize_function,
        batched=True,
        remove_columns=["text"]
    )

    train_dataset = tokenized_dataset["train"]
    valid_dataset = tokenized_dataset["validation"]

    data_collator = DataCollatorForLanguageModeling(
        tokenizer=tokenizer,
        mlm=False  # Causal LM (not masked LM)
    )

    script_directory = os.path.dirname(os.path.abspath(__file__))
    ds_config_path = os.path.join(script_directory, "ds_config.json")

    training_args = TrainingArguments(
        output_dir="./results",
        num_train_epochs=3,
        per_device_train_batch_size=2,  # Adjust based on GPU memory
        gradient_accumulation_steps=4,  # Effective batch size = batch_size * gradient_accumulation_steps
        save_strategy="steps",
        save_steps=200,
        logging_steps=2,
        eval_strategy="steps",
        eval_steps=100,
        bf16=True,  # Enable BF16 mixed precision (use fp16 if unsupported)
        deepspeed=ds_config_path,  # Path to DeepSpeed config file
        report_to="none",
    )

    model = AutoModelForCausalLM.from_pretrained( model_path,  local_files_only=True, low_cpu_mem_usage=True, device_map=None)

    # Initialize Trainer
    trainer = Trainer(
        model=model,
        args=training_args,
        train_dataset=train_dataset,
        eval_dataset=valid_dataset,  # Optional: validation set for evaluation
        processing_class=tokenizer,
        data_collator=data_collator,
    )

       # ADD configuration for Concurrent CHECKPOINT ENGINE
    config = {
        "host_cache_size": 50,
        "parser_threads": 1,
        "pin_host_cache": True,
        "trainer": trainer,
    }

    ckpt_engine = DecoratedCheckpointing(runtime_config=config, rank=args.local_rank)

    resume_from_checkpoint=False

    if os.getenv("CKPT_LAST_STEP") != None :
        resume_from_checkpoint=True

    trainer.train(resume_from_checkpoint=resume_from_checkpoint)
코드블록. Spot Training 사용 시 스크립트 예시

다음 절차의 예시를 참고하여 스크립트를 작성하세요.

  1. Import Concurrent CHECKPOINT
from datastates.llm import DecoratedCheckpointing
...
  1. ADD configuration for Concurrent CHECKPOINT ENGINE
config = {
       "host_cache_size": 50,
       "parser_threads": 1,
       "pin_host_cache": True,
       "trainer": trainer,
}
참고

예시 그대로 입력하는 것을 추천하며, 메모리 이슈 발생 시 담당자에게 host_cache_size 가용 가능 값을 요청합니다.

  • host_cache_size: 사용될 host의 pinned memory 크기이며 단위는 GB입니다.
  • trainer: 위에서 초기화한 huggingface trainer를 넣어줍니다.
  1. Initialize Concurrent CHECKPOINT ENGINE
ckpt_engine = DecoratedCheckpointing(runtime_config=config, rank=args.local_rank)
  1. Set Concurrent CHECKPOINT ENGINE parameter
resume_from_checkpoint=False

if os.getenv("CKPT_LAST_STEP") != None :
       resume_from_checkpoint=True

trainer.train(resume_from_checkpoint=resume_from_checkpoint)
참고
유휴 GPU를 재할당하여 학습 재개 시 체크포인트 자동 로드 및 무중단 학습을 위한 옵션이 활성화됩니다.

Concurrent Checkpoint 저장 경로

저장 경로는 기본적으로 TrainingArgumentoutput_dir을 기반으로 합니다.
해당 output_dir 하위 경로에 concurrent_checkpoint라는 디렉토리 하위에 저장됩니다.

참고
체크포인트 자동 또는 수동 로드 시 output_dir 경로에 저장된 checkpoint중 가장 최신(예시: 가장 step 숫자가 큰 checkpoint)으로 로드됩니다.

On-Demand Training 사용하기

On-Demand Training 사용 방법 Spot Training 사용 방법과 유사합니다.

안내
현재 자동 Parameter 기능은 지원하지 않으며 수동으로만 활성화할 수 있습니다.

최초 학습

다음 절차의 예시를 참고하여 스크립트를 작성하세요.

  1. Import Concurrent CHECKPOINT
from datastates.llm import DecoratedCheckpointing
...
  1. ADD configuration for Concurrent CHECKPOINT ENGINE
config = {
       "host_cache_size": 50,
       "parser_threads": 1,
       "pin_host_cache": True,
       "trainer": trainer,
}
참고

예시 그대로 입력하는 것을 추천하며, 메모리 이슈 발생 시 담당자에게 host_cache_size 가용 가능 값을 요청합니다.

  • host_cache_size: 사용될 host의 pinned memory 크기이며 단위는 GB입니다.
  • trainer: 위에서 초기화한 huggingface trainer를 넣어줍니다.
  1. Initialize Concurrent CHECKPOINT ENGINE
ckpt_engine = DecoratedCheckpointing(runtime_config=config, rank=args.local_rank)
  1. Set Concurrent CHECKPOINT ENGINE parameter
trainer.train(resume_from_checkpoint=False)

수동 활성화 시

최초 학습 시 지정한 output_dir 경로에 유효한 체크포인트가 확인될 경우, 학습 재실행 시 해당 체크포인트 경로를 직접 model initialize 시 지정하여 로드합니다. 또는 학습을 재실행할 때 기존 output_dir과 동일하게 지정하고 다음과 같이 설정하여 최신 체크포인트를 자동으로 로드할 수 있습니다.

주의
수동으로 활성화한 경우, 해당 체크포인트의 유효 여부를 보장할 수 없습니다.

다음 절차의 예시를 참고하여 스크립트를 작성하세요.

  1. Import Concurrent CHECKPOINT
from datastates.llm import DecoratedCheckpointing
...
  1. ADD configuration for Concurrent CHECKPOINT ENGINE
config = {
       "host_cache_size": 50,
       "parser_threads": 1,
       "pin_host_cache": True,
       "trainer": trainer,
}
참고

예시 그대로 입력하는 것을 추천하며, 메모리 이슈 발생 시 담당자에게 host_cache_size 가용 가능 값을 요청합니다.

  • host_cache_size: 사용될 host의 pinned memory 크기이며 단위는 GB입니다.
  • trainer: 위에서 초기화한 huggingface trainer를 넣어줍니다.
  1. Initialize Concurrent CHECKPOINT ENGINE
ckpt_engine = DecoratedCheckpointing(runtime_config=config, rank=args.local_rank)
  1. Set Concurrent CHECKPOINT ENGINE parameter
trainer.train(resume_from_checkpoint=True)

Job 실행하기

Training Job 생성 화면의 Command 필드에 사용하고자 하는 명령어와 함께 기능 관련 환경 변수를 추가하여 실행합니다.

안내
Training Job 실행 방법은 On-Demand Training 타입과 Spot Training 타입 모두 동일합니다.
| language = go
PYTHONPATH=$CHECKPOINT_VENDOR HF_DATASETS_OFFLINE="1" ${USER_SCRIPT}
  • PYTHONPATH=$CHECKPOINT_VENDOR: 기능 활성화를 위한 라이브러리 경로를 로드하도록 설정합니다.
  • HF_DATASETS_OFFLINE=“1”: Samsung Cloud Platform 망은 huggingface 로그인 및 모델/데이터셋 다운로드를 지원하지 않습니다. 따라서 사용자 스크립트에서 huggingface 네트워크 호출을 방지하는 용도로 설정합니다.

예시

기본 코드

| language = actionscript
  • python 파일
python /mnt/experiment/training/compatiblitiy-test/version_check.py
  • deepspeed
deepspeed --num_gpus=2 /mnt/experiment/training/compatiblitiy-test/train_llama_8b-demo.py
  • accelerate
accelerate launch --config_file /mnt/experiment/training/compatiblitiy-test/sat-test/fsdp_config.yaml --num_processes 4 /mnt/experiment/training/compatiblitiy-test/sat-test/train_llama_1b-demo.py

기능 사용 시

| language = actionscript
  • python 파일
PYTHONPATH=$CHECKPOINT_VENDOR python /mnt/experiment/training/compatiblitiy-test/version_check.py
  • deepspeed
PYTHONPATH=$CHECKPOINT_VENDOR deepspeed --num_gpus=4 /mnt/experiment/training/compatiblitiy-test/train_llama_8b-demo.py
  • accelerate
PYTHONPATH=$CHECKPOINT_VENDOR accelerate launch --config_file /mnt/experiment/training/compatiblitiy-test/sat-test/fsdp_config.yaml --num_processes 4 /mnt/experiment/training/compatiblitiy-test/sat-test/train_llama_1b-demo.py
주의
해당 기능을 활성화하면 라이브러리 경로에 설치된 Python 패키지 버전이 우선 실행됩니다. (예시: 사용자 이미지 torch 버전 2.11 → torch 2.12.1 로 실행)
transformers==5.10.2
numpy==2.4.6
pybind11==3.0.4
safetensors==0.8.0
torch==2.12.1
torchvision==0.27.1
datasets==4.8.4
pytest
cuda-bindings~=13.2.0
packaging<=26.0

#--- test deepspeed version library
deepspeed==0.18.9
accelerate==1.13.0

진행 상황 확인

진행 상황은 Training Job 상세 페이지의 로그 탭에서 확인할 수 있습니다.
진행 상황을 확인하려면 다음 절차를 따르세요.

  1. 모든 서비스 > AI/ML > Simple AI Training 메뉴를 클릭하세요. Simple AI Training의 Service Home 페이지로 이동합니다.
  2. Service Home 페이지에서 Training Job 메뉴를 클릭하세요. Training Job 목록 페이지로 이동합니다.
  3. Training Job 목록 페이지에서 상세 정보를 확인할 자원을 클릭하세요. Training Job 상세 페이지로 이동합니다.
  4. 로그 탭을 클릭한 후, 로그를 확인하세요. 환경 준비 상태로 로그를 확인할 수 있습니다.
| language = actionscript | title = 
[INFO] Concurrent Checkpoint library is installed
waiting for validator through /channel/stage.socket...
validator is running....
sidecar container is running and ready for training process to run!
안내
  • 사용 환경은 Concurrent Checkpoint 기능의 사용 여부와 상관 없이 On-Demand Training 타입과 Spot Training 타입 모두 제공됩니다.
  • On-Demand Training 타입의 경우, 자동 Parameter 기능을 지원하지 않으므로 기능 사용 시 다음과 같이 Parameter 관련 에러 로그가 발생할 수 있습니다. 단, 최신 체크포인트 로드 기능은 정상 동작합니다.
| language = actionscript | title = 
[2026-07-10 01:50:09,939] [ERROR] [decorator.py:442:get_last_checkpoint_preprocess] [Concurrent Checkpoint] No Checkpoint found with step: -1
ERROR:datastates.llm.decorator:[Concurrent Checkpoint] No Checkpoint found with step: -1

2.3 - Release Note

Simple AI Training

2026.07.16
NEW 서비스 정식 출시
  • Simple AI Training 서비스를 정식 출시하였습니다.
    • 모델 학습 환경을 위한 별도의 AI 인프라, 플랫폼을 직접 구축하거나 관리할 필요 없이 학습에 필요한 리소스를 즉시 할당받아 사용할 수 있습니다.

3 - CloudML

3.1 - Overview

서비스 개요

CloudML은 클라우드 환경에서 데이터 분석부터 모델 개발, 학습, 검증, 배포까지 머신러닝 전 과정을 지원하는 통합 플랫폼입니다.

특장점

  • Cloud ML은 분석가, 머신러닝 엔지니어, 개발자 등 다양한 역할의 사용자가 하나의 환경에서 협업하고, 손쉽게 머신러닝 워크플로우를 설계하고 운영할 수 있도록 설계되었습니다.
  • Cloud ML은 Python과 R을 기반으로 분석 환경을 제공하며, 프로그래밍 경험이 있는 사용자는 더욱 유연하고 효과적으로 플랫폼을 활용할 수 있습니다. 특히, 생성형 AI 기반의 Copilot 기능을 이용하면 자연어 입력만으로 코드 작성, 리펙토링, 오류 수정, 함수 추천 등을 손쉽게 수행할 수 있어, 분석 생산성과 분석 접근성을 높여줍니다.
  • Cloud ML은 분석 환경 구성, 모델 개발 및 서빙, 분석 자동화, 시각화 등 각 단계를 체계적으로 지원합니다. 반복적인 실험과 운영 자동화를 통해 생산성과 모델 품질을 모두 향상시킬 수 있도록 지원합니다.

서비스 구성도

CloudML은 분석 환경, 머신러닝 라이프사이클 관리, 자동분석 지원, 시각화, 생성형 AI 기반 Copilot 기능 등으로 구성되어 있으며, 사용자는 이 구성요소를 통해 머신러닝 전 과정을 통합적으로 수행할 수 있습니다.

구성도
그림. CloudML 구성도

제공 기능

CloudML은 다음과 같은 기능을 제공하고 있습니다.

  • 시각적 모델링: Drag&Drop 방식으로 코딩 없이 머신러닝 모델을 구축하고 배포할 수 있는 직관적인 인터페이스를 제공합니다. 데이터 불러오기부터 모델 평가, 배포까지 모든 과정을 쉽게 관리할 수 있습니다.
  • 코드 기반 개발: Jupyter Notebook 환경에서 Python, R 등을 사용하여 자유롭게 코드를 작성하고 실행할 수 있습니다. 고급 사용자 및 연구자를 위한 강력한 기능을 제공합니다.
  • 워크플로우 자동화: 데이터 전처리, 모델 학습, 평가, 배포 등 복잡한 머신러닝 워크플로우를 효율적으로 자동화합니다.
  • 실험 관리: 다양한 파라미터 조합으로 머신러닝 모델을 학습시키고, 그 결과를 체계적으로 관리하고 비교할 수 있습니다.
  • Copilot 기능 활용: 자연어 기반의 AI 어시스턴트 기능을 제공하여 모델 개발 과정을 가이드하고 자동화합니다. 코드 생성, 리펙토링, 오류 수정, 설명 등 다양한 작업을 지원하여 생산성을 향상시킵니다.
  • 통합 플랫폼: 모든 기능이 CloudML 내에서 통합되어 편리하게 사용할 수 있습니다.
  • 확장성 및 유연성: 필요에 따라 컴퓨팅 자원 확장 및 다양한 데이터 소스 연결을 지원합니다.

제약 사항

CloudML 사용 전 아래 제약 사항을 반드시 확인하고, 서비스 이용 계획에 반영하세요. Cloud ML은 Kubernetes 기반 환경에서 동작하므로, 안정적인 서비스 운영을 위해 적절한 클러스터 자원 설정이 필요합니다.

  • Application 기본 자원: Application 구동을 위해 최소 vCPU 24코어, 메모리 96GBi가 기본적으로 할당됩니다.
  • 분석 작업 자원: 분석 작업 수행을 위해서는 위 기본 자원 외에 추가적인 CPU 또는 GPU 자원 설정이 필요합니다. 분석 작업의 부하량을 고려하여 적절히 설정해야 합니다.
  • Copilot (CPU 기반 사용): Copilot을 CPU 자원에서 실행하려면 최소 vCPU 16코어, 메모리 10GBi가 필요합니다. 이 경우, 분석 작업에 사용 가능한 CPU 자원은 그만큼 줄어듭니다.
  • Copilot (GPU 기반 사용): Copilot은 전용 GPU 자원을 설정하여 사용할 수도 있습니다.
  • 지원 LLM 모델: 현재 Copilot에 적용 가능한 LLM 모델은 Llama3로 제한됩니다.

리전별 제공 현황

CloudML은 아래의 환경에서 제공 가능합니다.

리전제공 여부
한국 서부(kr-west1)제공
한국 동부(kr-east1)제공
한국 남부1(kr-south1)미제공
한국 남부2(kr-south2)미제공
한국 남부3(kr-south3)미제공
표. CloudML 리전별 제공 현황

선행 서비스

해당 서비스를 생성하기 전에 미리 구성되어 있어야 하는 서비스 목록입니다. 자세한 내용은 각 서비스 별로 제공되는 가이드를 참고하여 사전에 준비하세요.

서비스 카테고리서비스상세 설명
ContainerContainer Registry컨테이너 이미지를 저장, 관리, 공유하는 서비스
ContainerKubernetes EngineKubernetes 컨테이너 오케스트레이션 서비스
NetworkingLoad Balancer서버 트래픽 부하를 자동으로 분산하는 서비스
표. CloudML 선행 서비스

3.2 - How-to guides

CloudML 생성하기

사용자는 Samsung Cloud Platform Console을 통해 CloudML의 필수 정보를 입력하고, 상세 옵션을 선택하여 해당 서비스를 생성할 수 있습니다.

CloudML을 생성하려면 다음 절차를 따르세요.

  1. 모든 서비스 > AI/ML > CloudML 메뉴를 클릭하세요. CloudML의 Service Home 페이지로 이동합니다.

  2. Service Home 페이지에서 CloudML 생성 버튼을 클릭하세요. CloudML 페이지로 이동합니다.

  3. CloudML 생성 페이지에서 서비스 생성에 필요한 정보들을 입력하고, 상세 옵션을 선택하세요.

    • 버전 선택 영역에서 해당 서비스의 버전을 선택하세요.

      구분
      필수 여부
      상세 설명
      버전 선택필수CloudML 버전 선택
      표. CloudML 서비스 버전 선택 항목

    • SCP Kubernetes Engine에서 배포 영역에서 서비스 생성에 필요한 옵션을 선택하세요.

      구분
      필수 여부
      상세 설명
      클러스터명필수Kubernetes Engine 클러스터 선택
      표. CloudML 서비스 클러스터 선택 항목

    • 서비스 정보 입력 영역에서 서비스 생성에 필요한 옵션을 선택하세요.

      구분
      필수 여부
      상세 설명
      CloudML명필수서비스명 입력
      설명선택서비스 설명 입력
      도메인명필수서비스에서 사용할 도메인명 입력
      • 영문 소문자, 숫자, 특수문자를 사용해 2-63자 입력
      엔드포인트필수서비스에서 사용할 엔드포인트 선택
      • PrivatePublic 중 선택
      Copilot선택서비스에서 Copilot 사용 여부 선택
      • 신청 선택 시 팝업창에서 약관 동의 필요
      • 선택한 클러스터가 LLM 전용 GPU로 구성되지 않고, LLM 할당 자원이 충분하지 않은 경우 Copilot 신청 불가
      자원 정보필수선택한 클러스터의 자원 정보 표시
      SCR 정보 입력필수서비스에서 사용할 SCR 정보 입력
      • 프라이빗 엔드포인트, 인증키, 시크릿 키 입력
      표. CloudML 서비스 정보 입력 항목

    • 추가 정보 입력 영역에서 필요한 정보를 입력 또는 선택하세요.

      구분
      필수 여부
      상세 설명
      태그선택태그 추가
      • 자원 당 최대 50개까지 추가 가능
      • 태그 추가 버튼을 클릭한 후 Key, Value 값을 입력 또는 선택
      표. CloudML 추가 정보 입력 항목

  4. 요약 패널에서 생성한 상세 정보와 예상 청구 금액을 확인하고, 완료 버튼을 클릭하세요.

    • 생성이 완료되면, CloudML 목록 페이지에서 생성한 자원을 확인하세요.

CloudML 상세 정보 확인하기

CloudML 서비스의 전체 자원 목록과 상세 정보를 확인하고 수정할 수 있습니다. CloudML 상세 페이지는 상세 정보, 태그, 작업 이력 탭으로 구성되어 있습니다.

CloudML 상세정보를 확인하려면 다음 절차를 따르세요.

  1. 모든 서비스 > AI/ML > CloudML 메뉴를 클릭하세요. CloudML의 Service Home 페이지로 이동합니다.
  2. Service Home 페이지에서 상세 정보를 확인할 자원(CloudML)을 클릭하세요. CloudML 상세 페이지로 이동합니다.
    • CloudML 상세 페이지에는 CloudML의 상태 정보 및 상세 정보가 표시되며, 상세 정보, 태그, 작업 이력 탭으로 구성됩니다.
      구분상세 설명
      서비스 상태CloudML의 상태
      • Creating: 생성 중
      • Deployed: 생성 완료/정상 작동 중
      • Updating: 설정 업데이트 중
      • Terminating: 삭제 중
      • Error: 에러 발생
      접속 가이드서비스 접속 가이드
      • 사용자 PC에 등록할 host 정보 안내
      서비스 해지서비스를 해지하는 버튼
      표. CloudML 상태 정보 및 부가 기능

상세 정보

CloudML 목록 페이지에서 선택한 자원의 상세 정보를 확인하고, 필요한 경우 정보를 수정할 수 있습니다.

구분상세 설명
서비스서비스명
자원 유형자원 유형
SRNSamsung Cloud Platform에서의 고유 자원 ID
자원명자원 이름
자원 ID서비스에서의 고유 자원 ID
생성자서비스를 생성한 사용자
생성 일시서비스를 생성한 일시
수정자서비스 정보를 수정한 사용자
수정 일시서비스 정보를 수정한 일시
상품명CloudML 이름
CopilotCopilot 사용 여부
설명서비스에 대한 설명
클러스터명선택한 Kubernetes Engine 클러스터명
도메인명입력한 서비스 도메인명
버전선택한 서비스 버전
설치 노드 정보클러스터에 설치된 노드 정보
SCR 정보입력한 SCR 정보
표. CloudML 상세 정보 항목

태그

CloudML 목록 페이지에서 선택한 자원의 태그 정보를 확인하고, 추가하거나 변경 또는 삭제할 수 있습니다.

구분상세 설명
태그 목록태그 목록
  • 태그의 Key, Value 정보 확인 가능
  • 태그는 자원 당 최대 50개까지 추가 가능
  • 태그 입력 시 기존에 생성된 Key와 Value 목록을 검색하여 선택
표. CloudML 태그 탭 항목

작업 이력

CloudML 목록 페이지에서 선택한 자원의 작업 이력을 확인할 수 있습니다.

구분상세 설명
작업 이력 목록자원 변경 이력
  • 작업 일시, 자원 유형, 자원명, 작업 내역, 작업 결과, 작업자명, 경로 정보 확인이 가능
  • 상세 검색을 하려면 상세 검색 버튼을 클릭
표. 작업 이력 탭 상세 정보 항목

CloudML 서비스 해지하기

사용자는 Samsung Cloud Platform Console을 통해 CloudML 서비스를 해지할 수 있습니다.

참고
CloudML 서비스 상태가 Creating, Updating, Terminating인 경우에는 서비스를 해지할 수 없습니다.

CloudML을 해지하려면 다음 절차를 따르세요.

  1. 모든 서비스 > AI/ML > CloudML 메뉴를 클릭하세요. CloudML의 Service Home 페이지로 이동합니다.
  2. Service Home 페이지에서 서비스 해지 버튼을 클릭하세요. 서비스 해지 알림창이 나타납니다.
  3. 알림창에서 삭제할 CloudML 이름을 입력하고 확인 버튼을 클릭하세요.

3.2.1 - Kubernetes 클러스터 구성

Kubernetes 클러스터 구성하기

CloudML 서비스를 신청하기 위해서는 CloudML만을 위한 전용 클러스터가 구성되어 있어야 합니다. 전용 클러스터란 요구되는 최소 사양 이상의 Kubernetes Engine을 생성하고 몇 가지 필요 사항을 설정하는 것을 의미합니다. CloudML 서비스를 신청하기 전에 전용 클러스터를 미리 생성하세요.

  • 클러스터를 생성하는 방법은 클러스터 생성 가이드를 참고하세요.
  • CloudML은 443 포트의 HTTPS 엔드포인트를 노출합니다. 클러스터 생성 시 퍼블릭 엔드포인트를 선택하세요.

클러스터 노드 및 저장소 권장 사양

클러스터 노드는 클러스터 생성 후 추가하거나 수정할 수 있습니다. 다음은 사용자 5명을 기준으로 CloudML를 설치하기 위해 준비되어야 하는 클러스터 노드 및 저장소의 권장 사양입니다.

구분항목역할용량
클러스터 노드Kubernetes 노드 풀 (Virtual Server)Application 구동
  • node.kubernetes.io/nodetype: ml-app
24 core / 96 GBi
클러스터 노드Kubernetes 노드 풀 (Virtual Server)Analysis 실행
  • node.kubernetes.io/nodetype: ml-analytics
8 core / 32 GBi x 2 EA
  • 총 16 core / 64 GBi
저장소File Storage데이터 저장1 TB
표. 클러스터 노드 및 저장소 권장 사양 항목
안내

노드 개수의 변경, GPU 노드 추가 또는 리소스 증설 등 사양 변경이 필요한 경우에는 기술 지원을 요청하세요.

노드에 라벨 추가하기

클러스터 노드 및 저장소 권장 사양에서 제시한 역할별로 노드에 라벨을 직접 추가하세요.

클러스터 노드에 라벨을 추가하려면 다음 절차를 따르세요.

  1. 모든 서비스 > Container > Kubernetes Engine 메뉴를 클릭하세요. Kubernetes Engine의 Service Home 페이지로 이동합니다.
  2. Service Home 페이지에서 노드 메뉴를 클릭하세요. 노드 목록 페이지로 이동합니다.
  3. 노드 목록 페이지에서 상세 정보를 확인하려는 클러스터를 왼쪽 상단의 톱니바퀴 버튼에서 선택한 후, 확인 버튼을 클릭하세요.
  4. 상세 정보를 확인하려는 노드를 선택해 클릭하세요. 노드 상세 페이지로 이동합니다.
  5. 노드 상세 페이지에서 YAML 탭을 클릭하세요. YAML 탭 페이지로 이동합니다.
  6. YAML 탭 페이지에서 편집 버튼을 클릭하세요. 노드 편집창이 열립니다.
  7. 노드 편집창에서 역할에 맞는 라벨을 추가하고 저장 버튼을 클릭하세요.
    • 다음 정보를 확인해 노드 사양에 맞는 라벨을 추가합니다.
      구분목적별 라벨
      CPU 노드
      • 앱용: node.kubernetes.io/nodetype: ml-app
      • 분석용: node.kubernetes.io/nodetype: ml-analytics
      GPU 노드
      • 분석용: node.kubernetes.io/nodetype: ml-analytics-gpu
      • copilot용: node.kubernetes.io/nodetype: ml-gpu
      표. Kubernetes 노드의 목적별 라벨 항목

3.3 - API Reference

API Reference

3.4 - CLI Reference

CLI Reference

3.5 - Release Note

CloudML

2025.07.01
NEW CloudML 서비스 정식 버전 출시
  • Samsung Cloud Platform을 통해 클라우드 환경에서 데이터 분석부터 모델 개발, 학습, 검증, 배포까지 머신러닝 전 과정을 지원하는 CloudML 서비스를 출시하였습니다.

4 - AI&MLOps Platform

4.1 - Overview

서비스 개요

AI&MLOps Platform은 머신러닝 모델의 개발, 학습, 배포 과정 전체 파이프라인의 반복적인 작업을 자동화하는 머신러닝 플랫폼입니다. AI&MLOps Platform 서비스를 통해 Kubernetes 기반의 AI/MLOps 환경을 기반으로, 학습 데이터와 모델, 운영 데이터의 통합적인 관리가 가능합니다.

AI&MLOps Platform은 머신러닝 모델의 개발, 학습, 튜닝, 배포 기능을 활용할 수 있는 오픈소스 상품인 Kubeflow.Mini 서비스와 분산학습 Job 실행 및 모니터링 등 Add-on 기능을 추가한 Enterprise 서비스를 제공합니다.

참고
AI&MLOps Platform 관련 사이트는 Kubeflow를 참고하세요.

특장점

  • Cloud Native MLOps 환경 제공: AI&MLOps Platform은 클라우드에 최적화된 머신러닝 모델 개발 환경을 제공하며, Kubernetes 기반으로 다양한 오픈소스와의 연계가 편리합니다.

  • 머신 러닝 개발 및 운영 편의성: TensorFlow, PyTorch, scikit-learn, Keras 등 다양한 머신러닝 프레임워크를 지원하는 표준화된 환경을 제공합니다. 머신러닝 모델의 개발, 학습, 배포 과정의 전체 Pipeline을 자동화하여 제공함으로써 모델 구성 및 생성이 쉽고 재사용이 용이합니다.

  • GPU 연계 활용 강화: Bare Metal Server 기반의 Multi Node GPU 및 GPUDirect RDMA(Remote Direct Memory Access)를 통해 LLM(Large Language Model)과 자연어처리(NLP)의 Job 속도를 획기적으로 개선할 수 있습니다.

서비스 구성도

구성도
그림. AI&MLOps Platform 구성도

제공 기능

AI&MLOps Platform은 다음과 같은 기능을 제공하고 있습니다.

  • ML 모델 개발 환경 및 기능

    • Notebook 제공: ML Framework(Tensorflow, Pytorch 등)를 포함한 Jupyter Notebook과 VS Code를 생성합니다.
    • TensorBoard: TensorBoard(*ML 모델 학습과정 시각화/분석 도구) 서버를 생성하고 관리합니다.
    • Volumes: ML 모델 개발 시 데이터셋과 모델 저장, Jupyter Notebook 생성 시 Volume 연결하여 사용합니다.
  • ML 모델 분산훈련 Job 수행/관리

    • 분산학습 Job 실행 및 모니터링, 추론서비스 관리 및 분석을 지원합니다. (Add-on)
    • Job Queue 관리 등 MLOps 환경 구성을 위한 다양한 기능을 제공합니다. (Add-on)
    • Job Scheduler(FIFO, Bin-packing, Gang 기반), GPU Fraction, GPU 자원 모니터링 등 효율적인 GPU 자원 활용 기능을 제공합니다. (Add-on)
    • BM 기반의 Multi Node GPU 및 GPU Direct RDMA(Remote Direct Memory Access)를 통해LLM(Large Language Model)과 자연어처리(NLP)의 Job 속도를 획기적으로 개선하였습니다. (Add-on)
  • ML 모델 실험관리 및 파이프라인

    • ML 파이프라인 실험관리를 위한 Experiments(KFP)를 제공합니다.
    • ML Task를 단계적으로 구성하여 실행하기 위한 Pipeline 자동화 구성 기능을 지원합니다.

구성 요소

운영체제 버전

AI&MLOps Platform에서 지원하는 운영체제는 다음과 같습니다.

운영체제(OS)버전
RHELRHEL 8.3
UbuntuUbuntu 18.04, Ubuntu 20.04, Ubuntu 22.04
표. 지원하는 운영체제 버전

리전별 제공 현황

AI&MLOps Platform은 아래의 환경에서 제공 가능합니다.

리전제공 여부
한국 서부(kr-west1)제공
한국 동부(kr-east1)제공
한국 남부1(kr-south1)미제공
한국 남부2(kr-south2)미제공
한국 남부3(kr-south3)미제공
표. AI&MLOps Platform 리전별 제공 현황

선행 서비스

해당 서비스를 생성하기 전에 미리 구성되어 있어야 하는 서비스 목록입니다. 자세한 내용은 각 서비스 별로 제공되는 가이드를 참고하여 사전에 준비하세요.

서비스 카테고리서비스상세 설명
ContainerKubernetes EngineKubernetes 컨테이너 오케스트레이션 서비스
표. AI&MLOps Platform 선행 서비스

4.2 - How-to guides

AI&MLOps Platform 생성하기

사용자는 Samsung Cloud Platform Console을 통해 AI&MLOps Platform의 필수 정보를 입력하고, 상세 옵션을 선택하여 해당 서비스를 생성할 수 있습니다.

AI&MLOps Platform을 생성하려면 다음 절차를 따르세요.

  1. 모든 서비스 > AI/ML > AI&MLOps Platform 메뉴를 클릭하세요. AI&MLOps Platform의 Service Home 페이지로 이동합니다.
  2. Service Home 페이지에서 AI&MLOps Platform 생성 버튼을 클릭하세요. AI&MLOps Platform 생성 페이지로 이동합니다.
  3. AI&MLOps Platform 생성서비스 유형 선택 페이지에서 서비스 생성에 필요한 정보들을 입력하고, 상세 옵션을 선택하세요.
    • 서비스 유형 및 버전 선택 영역에서 서비스 유형을 선택하세요.
      구분
      필수 여부
      상세 설명
      서비스 유형필수사용자가 선택하는 서비스 유형
      • AI&MLOps Platform
      • Kubeflow Mini
      서비스 유형 버전필수선택한 서비스의 버전 선택
      • 제공하는 서비스의 버전 리스트 제공
      표. AI&MLOps Platform 서비스 유형 및 버전 선택 항목
    • 클러스터 배포 영역 구분 영역에서 서비스 생성에 필요한 옵션을 선택하세요.
      구분
      필수 여부
      상세 설명
      클러스터 배포 영역필수
      • Kubernetes Engine에서 배포: 기존에 생성한 Kubernetes Engine을 선택
      • 새 클러스터에 배포: AI&MLOps Platform 생성 시에 Kubernetes Engine을 함께 생성
      표. AI&MLOps Platform 서비스 클러스터 배포 영역 구분 항목
      참고
      해당 클러스터 배포 설정에 따라 다음 서비스 정보 입력 페이지의 설정 요소들이 달라집니다.
  4. AI&MLOps Platform 생성서비스 정보 입력 페이지에서 서비스 생성에 필요한 정보들을 입력하고, 상세 옵션을 선택하세요.
    • 클러스터 배포 영역을 선택할 수 있습니다.
    • 설치에 필요한 Kubernetes 클러스터 사양은 설치에 필요한 Kubernetes 클러스터 사양 가이드를 참고하세요.
  5. AI&MLOps Platform 생성생성 정보 확인 페이지에서 생성한 상세 정보와 예상 청구 금액을 확인하고, 완료 버튼을 클릭하세요.
    • 생성이 완료되면, AI&MLOps Platform 서비스 목록 페이지에서 생성한 자원을 확인하세요.

AI&MLOps Platform 상세 정보 확인하기

AI&MLOps Platform 서비스는 전체 자원 목록과 상세 정보를 확인하고 수정할 수 있습니다. AI&MLOps Platform 서비스 상세 페이지에서는 상세 정보, 태그, 작업 이력 탭으로 구성되어 있습니다.

AI&MLOps Platform 서비스의 상세 정보를 확인하려면 다음 절차를 따르세요.

  1. 모든 서비스 > AI/ML > AI&MLOps Platform 서비스 메뉴를 클릭하세요. AI&MLOps Platform 서비스의 Service Home 페이지로 이동합니다.
  2. Service Home 페이지에서 AI&MLOps Platform 메뉴를 클릭하세요. AI&MLOps Platform 서비스 목록 페이지로 이동합니다.
  3. AI&MLOps Platform 서비스 목록 페이지에서 상세 정보를 확인할 자원을 클릭하세요. AI&MLOps Platform 서비스 상세 페이지로 이동합니다.
    • AI&MLOps Platform 서비스 상세 페이지에는 상태 정보 및 부가 기능 정보가 표시되며, 상세 정보, 태그, 작업 이력 탭으로 구성됩니다.

상세 정보

AI&MLOps Platform 서비스 목록 페이지에서 선택한 자원의 상세 정보를 확인하고, 필요한 경우 정보를 수정할 수 있습니다.

구분
상세 설명
서비스서비스명
자원 유형자원 유형
SRNSamsung Cloud Platform에서의 고유 자원 ID
자원명자원 이름
  • AI&MLOps Platform 서비스에서는 클러스터명을 의미
자원 ID서비스에서의 고유 자원 ID
생성자서비스를 생성한 사용자
생성 일시서비스를 생성한 일시
수정자서비스 정보를 수정한 사용자
수정 일시서비스 정보를 수정한 일시
대시보드상태대시보드 상태값
서비스명서비스 이름
Admin Email Address관리자 이메일 주소
이미지명서비스 이미지 이름
버전이미지 버전
서비스 유형베포된 서비스 유형
표. AI&MLOps Platform 서비스 상세 정보 항목

태그

AI&MLOps Platform 서비스 목록 페이지에서 선택한 자원의 태그 정보를 확인하고, 추가하거나 변경 또는 삭제할 수 있습니다.

구분상세 설명
태그 목록태그 목록
  • 태그의 Key, Value 정보 확인 가능
  • 태그는 자원 당 최대 50개까지 추가 가능
  • 태그 입력 시 기존에 생성된 Key와 Value 목록을 검색하여 선택
표. 클러스터 태그 탭 항목

작업 이력

AI&MLOps Platform 서비스 목록 페이지에서 선택한 자원의 작업 이력을 확인할 수 있습니다.

구분상세 설명
작업 이력 목록자원 변경 이력
  • 작업 내역, 작업 일시, 자원 유형, 자원명, 작업 결과, 작업자 정보 확인이 가능
  • 작업 이력 목록 리스트에서 해당하는 자원을 클릭하세요. 작업 이력 상세 팝업창이 열립니다.
표. AI&MLOps Platform 서비스 작업 이력 탭 상세 정보 항목

AI&MLOps Platform 접속하기

AI&MLOps Platform 대시보드에 접속하려면 하시 사전작업이 선행되어야 합니다.

사전작업

해당 AI&MLOps Platform 접속하기 위해서 사전에 Security Group과 Firewall(방화벽 사용 시)에 관련 포트와 접속이 필요한 IP를 설정해야 합니다.

  • Kubeflow Mini: 31390 포트 (Security Group의 인바운드 룰, VPC 방화벽)

  • 클러스터 Worker Node에 접근하려면 Security Group과 Firewall (VPC 방화벽 사용 시)에 22 포트의 인바운드 룰을 설정해야 합니다.

대시보드 접속하기

AI&MLOps Platform 서비스에 접속하려면 다음 절차를 따르세요.

  1. 모든 서비스 > AI/ML > AI&MLOps Platform 서비스 메뉴를 클릭하세요. AI&MLOps Platform 서비스의 Service Home 페이지로 이동합니다.
  2. Service Home 페이지에서 AI&MLOps Platform 서비스 메뉴를 클릭하세요. AI&MLOps Platform 서비스 목록 페이지로 이동합니다.
  3. AI&MLOps Platform 서비스 목록 페이지에서 상세 정보를 확인할 자원을 클릭하세요. AI&MLOps Platform 상세 페이지로 이동합니다.
  4. AI&MLOps Platform 상세 페이지에서 접속 가이드 버튼을 클릭하세요. 접속 가이드 팝업창이 열립니다.
  5. 접속 가이드 팝업창에서 대시보드URL 링크 를 클릭하세요. 해당 대시보드 페이지로 이동합니다.
주의
Public Subnet 사용 및 공인 IP 할당 시 외부 해킹, 악성코드 감염 등의 보안 공격에 노출될 수 있습니다.

AI&MLOps Platform 해지하기

사용하지 않는 해당 서비스를 해지하여 운영 비용을 절감할 수 있습니다. 단, 서비스를 해지하면 운영 중인 서비스가 즉시 중단될 수 있으므로 서비스 중단 시 발생하는 영향을 충분히 고려한 후 해지 작업을 진행해야 합니다.

주의
서비스 해지 후에는 데이터를 복구할 수 없으므로 주의해주세요.

AI&MLOps Platform을 해지하려면 다음 절차를 따르세요.

  1. 모든 서비스 > AI/ML > AI&MLOps Platform 서비스 메뉴를 클릭하세요. AI&MLOps Platform 서비스의 Service Home 페이지로 이동합니다.
  2. Service Home 페이지에서 AI&MLOps Platform 서비스 메뉴를 클릭하세요. AI&MLOps Platform 서비스 목록 페이지로 이동합니다.
  3. AI&MLOps Platform 서비스 목록 페이지에서 상세 정보를 확인할 자원을 클릭하세요. AI&MLOps Platform 상세 페이지로 이동합니다.
  4. AI&MLOps Platform 상세 페이지에서 서비스 해지 버튼을 클릭하세요. 서비스 해지 팝업창이 열립니다.
  5. 확인을 위해 서비스명을 입력한 후 확인을 클릭하세요.
  6. 해지가 완료되면, AI&MLOps Platform 서비스 목록 페이지에서 자원이 해지되었는지 확인하세요.

4.2.1 - 클러스터 배포

클러스터 배포 영역

Samsung Cloud Platform에서 AI&MLOps Platform 생성서비스 유형 선택에서 2가지의 클라우드 배포 영역을 제공하고 있습니다.

공통

클러스터 배포 작업을 진행하기 전에 꼭 설치에 필요한 Kubernetes 클러스터 사양을 확인하세요.

  • 클러스터 배포 영역의 선택에 상관없이 사전에 Kubernetes 클러스터 사양을 확인해야 합니다.
  • 상세한 사양 정보는 클러스터 사양 가이드를 참고하세요.

클러스터 배포 영역의 선택에 따라 AI&MLOps Platform 생성서비스 정보 입력 페이지의 설치 내용이 달라집니다.

SCP Kubernetes Engine에서 배포

  1. 모든 서비스 > AI/ML > AI&MLOps Platform 메뉴를 클릭하세요. AI&MLOps Platform의 Service Home 페이지로 이동합니다.
  2. Service Home 페이지에서 AI&MLOps Platform 생성 버튼을 클릭하세요. AI&MLOps Platform 생성 페이지로 이동합니다.
  3. AI&MLOps Platform 생성서비스 유형 및 버전 선택 페이지에서 서비스 생성에 필요한 정보들을 입력하고, 상세 옵션을 선택하세요.
    클러스터 배포
    SCP Kubernetes Engine에서 배포 옵션을 선택하세요.
  4. AI&MLOps Platform 생성서비스 정보 입력 페이지에서 서비스 생성에 필요한 정보들을 입력하고, 상세 옵션을 선택하세요.
    • 서비스 정보 입력 영역에서 서비스 생성에 필요한 정보들을 입력하거나 조회하세요.
      구분
      필수 여부
      상세 설명
      서비스명필수AI&MLOps Platform 이름 입력
      • AI&MLOps Platform 이름은 프로젝트 내에서 중복하여 사용 불가
      Storage Class필수Storage Class는 자동으로 등록
      설치 노드 정보조회선택한 Kubernetes Engine의 노드 정보를 확인
      Admin Email Address필수로그인 시 사용할 관리자(Admin)의 이메일 주소 입력
      비밀번호필수로그인 시 사용할 비밀번호를 입력
      비밀번호 확인필수비밀번호 오류를 방지하기 위해 비밀번호 재입력
      표. AI&MLOps Platform 서비스 정보 입력 항목
    • 추가 정보 입력 영역에서 서비스 생성에 필요한 정보들을 입력하거나 선택하세요.
      구분
      필수 여부
      상세 설명
      태그선택AI&MLOps Platform에 추가할 태그 선택
      • 태그 추가를 클릭하면 태그를 생성하여 추가하거나 기존 태그를 추가
      • 태그는 최대 50개까지 등록
      • 추가한 신규 태그는 서비스 생성 완료 후 적용
      표. AI&MLOps Platform 서비스 추가 정보 입력 항목

새 클러스터에 배포

  1. 모든 서비스 > AI/ML > AI&MLOps Platform 메뉴를 클릭하세요. AI&MLOps Platform의 Service Home 페이지로 이동합니다.
  2. Service Home 페이지에서 AI&MLOps Platform 생성 버튼을 클릭하세요. AI&MLOps Platform 생성 페이지로 이동합니다.
  3. AI&MLOps Platform 생성서비스 유형 및 버전 선택 페이지에서 서비스 생성에 필요한 정보들을 입력하고, 상세 옵션을 선택하세요.
    클러스터 배포
    새 클러스터에 배포 옵션을 선택하세요.
  4. AI&MLOps Platform 생성서비스 정보 입력 페이지에서 서비스 생성에 필요한 정보들을 입력하고, 상세 옵션을 선택하세요.
    • 서비스 정보 입력 영역에서 서비스 생성에 필요한 정보들을 입력하거나 조회하세요.

      구분
      필수 여부
      상세 설명
      서비스명필수AI&MLOps Platform 이름 입력
      • AI&MLOps Platform 이름은 프로젝트 내에서 중복하여 사용 불가
      Storage Class필수Storage Class는 자동으로 등록
      설치 노드 정보조회선택한 Kubernetes Engine의 노드 정보를 확인
      Admin Email Address필수로그인 시 사용할 관리자(Admin)의 이메일 주소를 입력
      비밀번호필수로그인 시 사용할 비밀번호를 입력
      비밀번호 확인필수비밀번호 오류를 방지하기 위해 비밀번호 재입력
      표. AI&MLOps Platform 서비스 정보 입력 항목

    • Kubernetes Engine 정보입력 영역에서 필요한 정보를 입력 또는 선택하세요.

      구분
      필수 여부
      상세 설명
      클러스터명필수클러스터 이름
      • 영문으로 시작하며 영문, 숫자, 특수문자(-) 사용
      • 3~30자 이내로 입력
      제어 영역 설정 > Kubernetes 버전필수Kubernetes 버전 선택
      제어 영역 설정 > 제어 영역 로깅선택제어 영역 로깅 사용 여부 선택
      • 클러스터 제어 영역의 Audit/Event 로그를 Cloud Monitoring의 로그 분석에서 확인 가능
      • Account 내 전체 서비스 대상으로 1GB의 로그 저장은 무료로 제공되며, 1GB가 넘을 경우 순차적으로 삭제됨
      네트워크 설정필수노드 풀의 네트워크 연결 설정
      • VPC: 미리 생성한 VPC를 선택
      • Availability Zone: 선택한 VPC의 Availability Zone 선택
      • Subnet: 선택한 VPC의 서브넷 중 사용할 일반 Subnet을 선택
      • Security Group: 검색 버튼을 클릭한 후 Security Group 선택 팝업창에서 Security Group을 선택
      • Load Balancer: Kubernetes Service 객체에서 type:LoadBalancer 기능 제공
        • 동일 네트워크 상의 로드 밸런서를 선택
        • 사용 여부를 선택
        • 설정 후에는 변경 불가
      File Storage 설정필수클러스터에서 사용할 파일 스토리지 볼륨을 선택
      • 기본 볼륨(NFS): 검색 버튼을 통해 File Storage를 선택
        • 기본 Volume 파일 스토리지는 NFS 형식만 제공
      표. Kubernetes Engine 서비스 정보 입력 항목

    • 노드 풀 정보 입력 영역에서 필요한 정보를 입력 또는 선택하세요.

      구분
      필수 여부
      상세 설명
      노드 풀 구성필수노드 풀 정보를 선택
      • * 표시된 항목은 필수 입력 항목이므로 반드시 입력
      • AI&MLOps Platform의 경우 사용에 따라 이미지 용량이 지속적으로 늘어날 수 있으므로 Block Storage를 최소 200GB 이상으로 설정 시 원활한 시스템 구성이 가능
      표. AI&MLOps Platform 서비스 정보 입력 항목
      참고
      • Windows OS의 노드 풀은 클러스터에서 추가 스토리지(CIFS) 볼륨이 사용 중인 경우에만 생성할 수 있습니다.
      • 노드 풀 Block Storage의 볼륨 암호화는 최초 생성 시에만 설정할 수 있습니다.
        • 암호화를 설정하면 일부 기능의 성능 저하가 발생할 수 있습니다.
      • 노드 풀 자동 확장 또는 축소 기능을 사용으로 선택한 경우에만 노드 수, 최소 노드 수, 최대 노드 수 를 입력할 수 있습니다.

    • 추가 정보 입력 영역에서 필요한 정보를 입력 또는 선택하세요.

      구분
      필수 여부
      상세 설명
      태그선택AI&MLOps Platform에 추가할 태그 선택
      • 태그 추가를 클릭하면 태그를 생성하여 추가하거나 기존 태그를 추가
      • 태그는 최대 50개까지 등록
      • 추가한 신규 태그는 서비스 생성 완료 후 적용
      표. AI&MLOps Platform 서비스 정보 입력 항목

클러스터 사양

AI&MLOps Platform을 이용하려면 AI&MLOps Platform을 설치할 Kubernetes Engine이 필요합니다. 기존에 생성한 Kubernetes Engine을 선택하거나, AI&MLOps Platform 생성 시 함께 Kubernetes Engine을 생성할 수 있습니다.

설치에 필요한 Kubernetes 클러스터의 사양은 다음과 같습니다.

  • 노드 풀 자원 규모 (2개 이상의 노드로 구성)

    • AI&MLOps Platfom : vCPU 32, Memory 128G 이상
    • Kubeflow Mini: vCPU 24, Memory 96G 이상
  • Kubernetes 버전

    • AI&MLOps Platform v1.9.1 (k8s v1.30)
    • Kubeflow Mini v1.9.1 (k8s v1.30)
안내
Kubernetes 클러스터 당 1대의 AI&MLOps Platform만 설치할 수 있으며, 다른 용도로 사용 중인 클러스터에는 AI&MLOps Platform을 설치할 수 없습니다.

4.2.2 - Kubeflow 사용 가이드

아래에서는 Kubeflow를 생성한 후, Kubeflow의 사용 방법에 대해 가이드합니다.

Kubeflow 사용자 추가

아래에서는 Kubeflow를 생성한 이후의 Kubeflow의 사용 방법에 대해 가이드합니다.

Kubeflow는 설치 초기 화면에서 입력한 Admin User 1명의 계정만 생성되어있습니다.

Kubeflow Dashboard 이용 시, 초기 사용자 이외에 사용자를 추가하기 위해서는 Dex(Kubeflow의 인증 연계 컴포넌트)의 설정을 변경해야 합니다.

  • Dex는 auth 네임스페이스(namespace)에 배포되며, 환경설정은 dex 라는 이름의 configmap 으로 저장되어 있습니다.
참고
kubeflow는 사용자별로 namespace가 분리되어 있습니다

다음은 Dex 환경 설정의 예시입니다.

배경색 변경
apiVersion: v1
kind: ConfigMap
metadata:
  name: dex
  namespace: auth
data:
  config.yaml: |
    issuer: http://dex.auth.svc.cluster.local:5556/dex
    storage:
      type: kubernetes
      config:
        inCluster: true
    web:
      http: 0.0.0.0:5556
    logger:
      level: "debug"
      format: text
    oauth2:
      skipApprovalScreen: true
    enablePasswordDB: true
    staticPasswords:
    - email: admin@kubeflow.org
      hash: $2y$10$Yb9WVbn8pzVSM6fBgKdFae1Bh6Z.XTihi7bNu3sB6/h5bt1JuUOgq
      username: admin
      userID: 9cb67307-fd6d-4441-9b59-52acd78f4c9e
    staticClients:
    - id: kubeflow-oidc-authservice
      redirectURIs: ["/login/oidc"]
      name: 'Dex Login Application'
      secret: pUBnBOY80SnXgjibTYM9ZWNzY2xreNGQok    
apiVersion: v1
kind: ConfigMap
metadata:
  name: dex
  namespace: auth
data:
  config.yaml: |
    issuer: http://dex.auth.svc.cluster.local:5556/dex
    storage:
      type: kubernetes
      config:
        inCluster: true
    web:
      http: 0.0.0.0:5556
    logger:
      level: "debug"
      format: text
    oauth2:
      skipApprovalScreen: true
    enablePasswordDB: true
    staticPasswords:
    - email: admin@kubeflow.org
      hash: $2y$10$Yb9WVbn8pzVSM6fBgKdFae1Bh6Z.XTihi7bNu3sB6/h5bt1JuUOgq
      username: admin
      userID: 9cb67307-fd6d-4441-9b59-52acd78f4c9e
    staticClients:
    - id: kubeflow-oidc-authservice
      redirectURIs: ["/login/oidc"]
      name: 'Dex Login Application'
      secret: pUBnBOY80SnXgjibTYM9ZWNzY2xreNGQok    
코드 블럭. Dex 환경 설정 예시

환경 설정에서 enablePasswordDB 값이 true인 경우, Dex는 서비스 기동 시 configmap 에서 staticPasswords 에 정의된 사용자 목록을 내부 저장소에 저장합니다. 따라서 staticPasswordsemail, hash, username, userID 로 구성된 신규 사용자 값을 추가하게 되면 초기 사용자 이외에도 사용자를 자유롭게 추가하여 Kubeflow 서비스 이용이 가능합니다.

사용자를 추가하기 위한 속성값은 다음과 같이 정의할 수 있습니다.

파라미터설명
email일반적인 E-mail 형식의 값
hashBcrypt 알고리즘으로 암호화 된 사용자 암호 값이며 Bcrypt 알고리즘으로 생성된 Hash 값을 직접 입력
username사용자 이름
  • kubernetes namespace 명명 규칙을 따름
  • 63자 제한, 소문자 숫자 및 - 문자만 사용 가능
userID유일하게 식별될 수 있는 ID 값
  • 초기 사용자의 userID는 uuidgen 커맨드를 이용하여 생성됨
표. 사용자를 추가하기 위한 속성값

kubectl을 사용할 수 있는 노드에서 다음 명령어를 이용해 dex configmap의 수정 화면으로 진입합니다.

배경색 변경
kubectl edit configmap dex -n auth
kubectl edit configmap dex -n auth
코드 블럭. kubectl - dex configmap 수정
배경색 변경
staticPasswords:
    - email: admin@kubeflow.org
      hash: $2y$10$Yb9WVbn8pzVSM6fBgKdFae1Bh6Z.XTihi7bNu3sB6/h5bt1JuUOgq
      username: admin
      userID: 9cb67307-fd6d-4441-9b59-52acd78f4c9e
    - email: sds@samsung.com
      hash: $2y$12$0g5.y86jnrt0v6In5NRCZ.YVuvrAUQ6j/RJYO3rV.kNulaDALOKfq
      username: sds
      userID: 8961d517-3498-4148-90c9-7e442ee91154
staticPasswords:
    - email: admin@kubeflow.org
      hash: $2y$10$Yb9WVbn8pzVSM6fBgKdFae1Bh6Z.XTihi7bNu3sB6/h5bt1JuUOgq
      username: admin
      userID: 9cb67307-fd6d-4441-9b59-52acd78f4c9e
    - email: sds@samsung.com
      hash: $2y$12$0g5.y86jnrt0v6In5NRCZ.YVuvrAUQ6j/RJYO3rV.kNulaDALOKfq
      username: sds
      userID: 8961d517-3498-4148-90c9-7e442ee91154
코드 블럭. dex configmap 수정

configmap의 staticPasswords 값은 Dex 서비스가 기동되는 시점에 반영되기 때문에 Dex 서비스를 다음 명령어로 재기동합니다.

배경색 변경
kubectl rollout restart deployment dex -n auth
kubectl rollout restart deployment dex -n auth
코드 블럭. kubectl - dex 재기동

신규 사용자 정보를 이용해 로그인을 시도합니다

그림1
신규 사용자 정보 로그인

정상적으로 로그인 되어 새로운 Namespace(profile)을 생성하는 화면으로 전환되는것을 확인합니다.

그림2
Namespace Name 생성

위 내용은 Kubeflow 공식 사이트를 참고하여 작성하였습니다. 자세한 내용은 Kubeflow Profiles 참고하세요.

Kubeflow Jupyter Notebook의 Custom Image 활용방법

Kubeflow의 Notebook Life Cycle을 관리하는 Kubeflow Notebook Controller에서 Custom Image를 사용하기 위해서는 몇 가지 요구사항을 만족해야 합니다.

Kubeflow는 Notebook 이미지가 실행되면 Jupyter가 자동으로 시작되는 것으로 인식합니다. 그래서 컨테이너 이미지에 Jupyter를 시작하는 기본 명령을 설정해야 합니다.

다음은 Dockerfile에 포함해야 하는 내용의 예시입니다.

배경색 변경
ENV NB_PREFIX /

CMD ["sh","-c", "jupyter notebook --notebook-dir=/home/${NB_USER} --ip=0.0.0.0 --no-browser --allow-root --port=8888 --NotebookApp.token='' --NotebookApp.password='' --NotebookApp.allow_origin='*' --NotebookApp.base_url=${NB_PREFIX}"]
ENV NB_PREFIX /

CMD ["sh","-c", "jupyter notebook --notebook-dir=/home/${NB_USER} --ip=0.0.0.0 --no-browser --allow-root --port=8888 --NotebookApp.token='' --NotebookApp.password='' --NotebookApp.allow_origin='*' --NotebookApp.base_url=${NB_PREFIX}"]
코드 블럭. Dockfile 예시

위 항목을 설명하면 아래와 같습니다.

파라미터설명
--notebook-dir=/home/jovyan작업 디렉토리 설정
  • /home/jovyan 디렉토리는 Kubernetes persistent volume(PV)에 Mount 됨
--ip=0.0.0.0Jupyter Notebook이 모든 IP에서 수신하도록 허용
--allow-rootJupyter Notebook을 사용자가 root로 실행하도록 허용
--port=8888Port 설정
--NotebookApp.token=’’ –NotebookApp.password=’’Jupyter 인증 비활성화
  • Kubeflow는 istio가 인증을 담당하기 때문에 Jupyter가 제공하는 인증 기능은 비활성화
  • 해당 설정을 사용하여 Jupyter Notebook Server에 비밀번호 없이 액세스 가능
--NotebookApp.allow_origin=’*’Allow origin
--NotebookApp.base_url=NB_PREFIXBase URL 설정
표. Dockerfile에 포함해야하는 설정

Custom Image 생성은 tesorflow notebook image를 생성하는 Dockerfile을 참고하여 생성할 수 있습니다.

참고
Custom Image는 Docker Hub와 같은 Public Registry 또는 Private Registry에 저장되어 Kubeflow에서 push/pull이 가능하여야 합니다.
  1. Notebook Servers 페이지에서 +NEW SERVER 버튼을 클릭하세요.

    그림3

  2. 일단 Custom Image를 생성했다면 kubeflow Notebook Server 화면에서 Custom Image를 체크하고, Custom Image의 주소 를 입력하여 새로운 Notebook Server를 생성합니다.

    그림4

안내

위 내용은 Kubeflow 공식 사이트를 참고하여 작성하였습니다.

4.3 - API Reference

API Reference

4.4 - CLI Reference

CLI Reference

4.5 - Release Note

AI&MLOps Platform

2025.07.01
FEATURE AI&MLOps Platform 오픈소스 버전 업그레이드
  • AI&MLOps Platform 오픈소스 버전 업그레이드하였습니다.
    • Kubeflow 1.9
2025.02.27
NEW AI&MLOps Platform 서비스 정식 버전 출시
  • 머신러닝 모델의 개발, 학습, 배포 과정 전체 파이프라인의 반복적인 작업을 자동화하는 AI&MLOps Platform 서비스가 출시되었습니다.
  • Kubernetes 기반의 머신 러닝 플랫폼 서비스를 제공합니다.