모델과 온라인 배포를 Marketplace 제품에 포함하기
Foundry DevOps 제품에 모델, 직접 온라인 배포와 모델 함수를 포함하면 다른 사용자가 Marketplace에서 설치할 수 있습니다. 제품에 포함한 모델을 출력으로 설치하거나 설치자가 기존 모델을 제품 입력으로 선택하게 구성합니다.
모델 출력의 패키징 방식
Include with content는 저장된 모델 파일과 가중치, 어댑터가 포함된 Python 라이브러리, 온라인 배포와 변환의 sidecar에 필요한 컨테이너 이미지를 복사합니다. 설치 후 다시 빌드할 수 없는 정적 모델입니다. 파일, Python 환경 및 컨테이너 이미지를 포함한 전체 크기가 8 GiB 미만이어야 하며 DevOps가 이 조건을 검증하고 초과하면 오류를 표시합니다.
Include with producer는 모델을 생성하는 로직을 설치합니다. 설치 이후 일정에 따라 지속적으로 학습할 수 있습니다. Code Repositories, 변환으로 게시한 Jupyter 노트북, Model Studio에서 만든 모델을 지원합니다. Jupyter에서 대화형으로 게시한 모델은 연결된 생성 로직이 없는 정적 리소스이므로 이 방식을 사용할 수 없습니다. 혼동을 줄이려면 최신 모델 버전을 패키징합니다.
저장소 프로듀서의 컨테이너 생성
코드 저장소의 컨테이너 이미지는 저장소 검사를 실행할 때 생성되며 그 뒤의 모델 빌드가 사용합니다. 제품 설치는 저장소 검사를 실행하지 않으므로 설치 직후 모델 빌드에는 컨테이너 이미지가 없을 수 있습니다. 이미지가 없는 버전은 온라인 배포와 sidecar 추론에 사용할 수 없습니다.
설치된 생성 저장소의 검사를 수동 실행하여 이미지를 만든 뒤 모델을 다시 빌드합니다. 이렇게 해야 어댑터 로직과 컨테이너 환경을 원본 모델에 맞출 수 있습니다. 저장소 프로듀서를 포함한 새 모델 버전을 배포할 때마다 이 절차가 필요합니다.
모델을 제품 입력으로 받기
모델을 제품 입력으로 지정하면 설치자가 모델 선택기에서 의존 구성요소에 필요한 모델 및 버전을 고릅니다. 모델 자체를 패키지에 복사하지 않으므로 설치 환경에 이미 있는 모델을 재사용하고 패키지 크기를 줄일 수 있습니다.
패키징한 변환에서 ModelInput으로 모델을 받을 때에는 use_sidecar=True를 설정해야 합니다. 별도 컨테이너에서 어댑터를 실행하므로 어댑터 라이브러리를 소비 저장소로 가져올 필요가 없습니다. 다른 모델 소비 방식에서도 sidecar 사용을 권장합니다.
직접 온라인 배포 포함
패키징 전에 모델의 기본 브랜치에 직접 배포를 만들고 설정을 저장합니다. 제품은 연산 자원, 복제본 한도, 크기 조정, 환경 변수와 스레드 수를 포함한 설정을 설치합니다. 다른 브랜치의 배포, Modeling Objective 배포와 외부 소스를 사용하도록 구성한 배포는 패키징할 수 없습니다.
- DevOps에서 모델을 제품 출력에 추가합니다.
- Packaging mode를 Include with content 또는 Include with producer로 선택합니다.
- Package live deployment를 Yes로 설정합니다. 기본 브랜치에 직접 배포가 있을 때만 이 옵션을 사용할 수 있습니다.
- 제품 출력에 배포와 이미 게시한 모델 함수가 포함되었는지 확인합니다.
Package live deployment를 No로 두거나 설정하지 않으면 배포와 함수가 자동 포함되지 않습니다. 설치 후 모델에 직접 배포를 수동으로 만들 수는 있습니다.
설치 후 시작
Auto-start live deployment 입력의 기본값은 false입니다. 새 배포를 중지 상태로 설치한 뒤 모델의 Live deployment > Overview > Start deployment에서 시작합니다. true이면 새 배포나 중지된 배포를 자동 시작합니다.
함수는 배포가 실행되기 전에 설치할 수 있지만 추론 요청에 응답하려면 배포가 실행 중이어야 합니다. Include with content는 설치한 모델 버전으로 배포를 만듭니다. Include with producer는 모델 버전이 아직 없으면 빌드를 기다립니다. 제품의 Build settings에서 설치 중 빌드를 구성하거나 배포 시작 전에 모델을 빌드하며 코드 저장소 프로듀서는 앞의 컨테이너 생성 조건도 충족해야 합니다.
제품 업그레이드는 패키지의 배포 설정을 적용합니다. 일반 빌드 또는 제품 업그레이드로 기본 브랜치에 새 모델 버전이 게시되면 배포도 자동 갱신됩니다. 업그레이드의 Auto-start live deployment를 false로 바꾸어도 실행 중인 배포를 중지하지는 않습니다. 이미 중지된 배포는 수동 시작하거나 입력을 true로 바꿔야 시작합니다.
모델 함수 패키징
패키징 전에 기본 브랜치 배포에서 모델 함수를 게시합니다. 모델 출력의 Package live deployment를 Yes로 설정하면 게시한 함수가 자동 포함되므로 설치 후 다시 게시할 필요가 없습니다.
함수를 별도 제품 출력으로 추가하여 버전을 직접 선택할 수도 있습니다. 이 경우 함수가 의존하는 배포와 해당 함수 버전의 모델 버전을 함께 포함합니다. 명시적으로 고른 함수 버전과 모델 버전이 서로 다르면 Marketplace가 충돌을 보고합니다. 함수 버전을 자동 해결하는 경우에도 선택한 모델에 맞추려고 과거 함수 버전을 검색하지는 않습니다.
소비 함수와 앱의 참조
모델 함수와 이를 가져오는 Workshop 앱 또는 다른 함수를 같은 제품에 넣으면 설치 시 참조를 설치된 함수로 바꿉니다. 대상 환경의 기존 함수를 쓰려면 모델 함수를 제품 입력으로 구성하고 설치할 때 선택합니다.
Marketplace는 저장소에 가져온 모델 함수 의존성을 추적합니다. 가져오기 없이 Platform SDK로 직접 조회하는 함수는 추적하지 않으므로 설치 때 해당 참조를 자동 갱신하지 않습니다. Python 및 TypeScript v2 저장소에서 가져오려면 모델 함수가 온톨로지에 등록되어 있어야 합니다. 공간에 연결된 함수를 사용하고 있다면 온톨로지 기반으로 이전하여 의존성 추적과 제품 입력 매핑을 사용합니다.
설치된 모델 함수 업그레이드
제품 설치와 업그레이드가 모델 함수 게시를 관리합니다. 모델이 Marketplace 설치의 출력으로 남아 있는 동안에는 기본 브랜치에 새 모델 버전을 게시해도 함수 버전을 자동 생성하지 않습니다. 이는 Package live deployment 설정과 관계없이 적용됩니다.
따라서 Include with producer의 정기 또는 수동 재학습은 배포의 모델을 갱신하지만 함수는 설치된 버전을 유지합니다. 모델 API를 유지하면 기존 함수로 계속 요청을 처리할 수 있습니다. API가 바뀌면 배포와 함수의 계약이 달라져 추론이 실패할 수 있습니다.
API 변경 시 원본 모델 함수와 이를 호출하는 함수 및 앱을 함께 갱신하고 새 제품 버전을 게시한 뒤 설치를 업그레이드합니다. 제품 밖의 소비자와 모델 함수를 입력으로 사용하는 다른 설치는 별도로 갱신합니다.
지원하지 않는 구성
Modeling Objectives 자체는 DevOps 및 Marketplace로 배포할 수 없습니다. 온라인 업무에는 직접 모델 배포를, 배치 업무에는 모델 변환을 사용합니다. 외부 모델도 지원하지 않습니다. 온라인 배포는 기본 브랜치에 있어야 하며 외부 소스를 포함할 수 없습니다. 콘텐츠 패키징의 전체 크기 제한은 8 GiB 미만입니다.