저장소 설정 및 모델 업로드 위치 Hugging Face
다음 단계를 따라 파운데이션 모델을 PVC Hugging Face 스토리지에 업로드하십시오.
전제조건
이 문서의 코드 스니펫에서 사용되는 일부 환경 변수는 설치 단계에서 설정되는 전역 변수입니다. 자세한 내용은 설치 환경 변수 설정을 참조하십시오.
저장소를 설정하고 다음 위치에 있는 모델을 Hugging Face 업로드하려면:
- 웹 사이트에서 Hugging Face 모델명을 찾으세요.
- 기본 환경 변수 설정:
export MODEL_NAME="<Hugging Face model name>" export HF_USERNAME="<Your Hugging Face username>" export HF_TOKEN="<Your Hugging Face token>" export MODEL_PATH="/mnt/models" - 모델을 복제하십시오.
모델을 복제한 후 생성된 폴더의 이름을 확인하십시오.git clone --no-checkout https://${HF_USERNAME}:${HF_TOKEN}@huggingface.co/${MODEL_NAME} - 모델 크기를 확인하십시오. 환경에 Large File Storage (
git lfs)가 Git 설치되어 있다면, 모델이 포함된 폴더로 이동한 후 모델 크기를 확인하십시오:
출력:git lfs ls-files -s
환경에 설치되어 있지root@wmlubntu1:~/falcon-7b# git lfs ls-files -s 1c4b989693 - pytorch_model-00001-of-00002.bin (10 GB) 11822397cd - pytorch_model-00002-of-00002.bin (4.5 GB)git lfs않은 경우, 모델 빌더 또는 모델이 원래 위치했던 저장소에서 이 정보를 반드시 확보해야 합니다. 모델이 에 Hugging Face 위치한 경우, 모델 이름을 클릭한 후 '파일 및 버전' 탭을 선택하면 모든 파일 크기를 확인할 수 있습니다. - 모델의 총 크기를 계산하고 결과에 100%의 완충 구역을 추가하십시오. 예를 들어, 모델 크기가 14.5 29GB인 경우 생성하는 PVC의 크기는 29GB입니다. 모델 크기를 환경 변수로 설정하십시오:
export MODEL_SIZE="<calculated model size>" - 클러스터에 사용자 정의 파운데이션 모델용 (PVC)
PersistentVolumeClaims스토리지를 생성하십시오.먼저, 새 PVC의 이름을 환경 변수로 설정합니다:
export PVC_NAME="<The name of the new PVC>"다음으로 이 코드를 실행하세요:
새 PVC 생성 또는 기존 PVC를 저장소 볼륨과 함께 사용하는 방법에 대한 자세한 내용은 저장소 볼륨 관리를 참조하십시오.cat <<EOF |oc apply -f - apiVersion: v1 kind: PersistentVolumeClaim metadata: name: ${PVC_NAME} namespace: ${PROJECT_CPD_INST_OPERANDS} spec: storageClassName: ${STG_CLASS_FILE} accessModes: - ReadWriteMany resources: requests: storage: ${MODEL_SIZE}Gi EOF - PVC 생성 후 2분간 기다린 다음, PVC가 바인딩되었는지 확인하기 위해 다음 명령어를 실행하십시오:
예상 결과:oc get pvc ${PVC_NAME} -n ${PROJECT_CPD_INST_OPERANDS} -o jsonpath='{.status.phase}'Bound - 토큰을 Hugging Face 다음으로
base64인코딩하세요:ENCODED_TOKEN=`echo -n ${HF_TOKEN} | base64` - 클러스터에 비밀을 생성하십시오:
먼저 새 시크릿의 이름을 설정합니다:
export SECRET_NAME="<The name of the new secret>"다음으로 이 코드를 실행하세요:
cat <<EOF |oc apply -f - apiVersion: v1 kind: Secret metadata: name: ${SECRET_NAME} namespace: ${PROJECT_CPD_INST_OPERANDS} type: Opaque data: TOKEN: ${ENCODED_TOKEN} EOF - Docker 이미지의
tag와name를 환경 변수로 설정하십시오.export IMAGE_NAME="http://registry.redhat.io/rhoai/odh-vllm-cuda-rhel9@sha256:751e2359439161babb9ad8e93e16251888a8c07aed895ffa55e4dfaf2a45f89d" - 모델을 에서 Hugging Face 다운로드하고, 해당 모델을 및
fast-tokenizersafetensor형식으로 변환하는 작업을 생성하고 실행합니다.먼저 작업 이름에 대한 환경 변수를 설정하십시오:
export DOWN_AND_CONV_JOB_NAME="<Name of the job>"다음으로 이 코드를 실행하세요:
cat <<EOF |oc apply -f - apiVersion: batch/v1 kind: Job metadata: name: ${DOWN_AND_CONV_JOB_NAME} namespace: ${PROJECT_CPD_INST_OPERANDS} spec: template: spec: containers: - name: models-convertor image: ${IMAGE_NAME}:${IMAGE_TAG} env: - name: MODEL_PATH value: ${MODEL_PATH} - name: MODEL_NAME value: ${MODEL_NAME} - name: TOKEN valueFrom: secretKeyRef: name: ${SECRET_NAME} key: TOKEN command: ["/bin/sh", "-c"] args: - | huggingface-cli login --token \${TOKEN} huggingface-cli download ${MODEL_NAME} --local-dir ${MODEL_PATH} --cache-dir ${MODEL_PATH} text-generation-server convert-to-safetensors ${MODEL_PATH} text-generation-server convert-to-fast-tokenizer ${MODEL_PATH} volumeMounts: - mountPath: ${MODEL_PATH} name: byom-model restartPolicy: Never volumes: - name: byom-model persistentVolumeClaim: claimName: ${PVC_NAME} EOF - 작업이 생성되었는지 확인하십시오:
oc get job ${DOWN_AND_CONV_JOB_NAME} -n ${PROJECT_CPD_INST_OPERANDS}예상 출력:
NAME COMPLETIONS DURATION AGE <job name> 1/1 xx xx마지막으로 작업 상태를 확인하세요:
oc get job ${DOWN_AND_CONV_JOB_NAME} -n ${PROJECT_CPD_INST_OPERANDS} -o jsonpath='{.status.conditions[?(@.type=="Complete")].status}'예상 출력:
True 모델이 시계열 모델인 경우 추가 단계가 필요할 수 있습니다. 시계열 모델용 파일 tsfm_config.json 생성을 참조하십시오.
채팅 API를 사용하는 모델의 경우, 모델과 함께 제공되는 표준 채팅 템플릿을 재정의할 수 있습니다. 이를 가능하게 하려면, 먼저 모델 제작자가 준비한 대체 템플릿을 다운로드하십시오. 그런 다음 해당
config.json파일이 위치한 위치(루트 폴더)와 동일한 위치에 업로드하십시오.
시계열 모델용 파일 tsfm_config.json 생성
시계열 모델용 모델 디렉터리에는 반드시 파일이
tsfm_config.json 포함되어야 합니다. (모델 유형 Hugging Face : tinytimemixer)에 호스팅되는 시계열 모델은 이 파일을 포함하지 않을 수 있습니다. 모델을 다운로드하고 배포할 때 파일이 존재하지 않으면 예측이 실패합니다. 모델 디렉터리에서 이 파일을 찾을 수 없는 경우 다음 단계를 수행하십시오:- 참고:
해당 파일을 생성하려면 환경에 버전 3.9 이상이 설치되어 Python 있어야 합니다.
패키지 설치가 필요하므로, 에어갭 환경에서 작업 중인 경우 인터넷에 접근 가능한 컴퓨터에서 스크립트를 실행한 후 생성된 파일을 에어갭 환경으로 전송해야 합니다.
- 이 코드를 실행하여 로컬 머신에 필요한 두 패키지를 설치하십시오:
pip3 install granite-tsfm==0.2.27 pip3 install ibm-cos-sdk - 누락된 파일을 생성하는 Python 스크립트를 작성하고 실행하십시오:
이 코드는 파일을from tsfm_public import TinyTimeMixerForPrediction from tsfm_public.toolkit.service_util import save_deployment_package # Instantiate the model target_columns = ["total load actual"] zeroshot_model = TinyTimeMixerForPrediction.from_pretrained( "ibm-granite/granite-timeseries-ttm-r2", # Name of the model on Hugging Face num_input_channels=len(target_columns), # tsp.num_input_channels ) save_deployment_package("ttm", zeroshot_model)ttm디렉터리에 저장합니다. - 생성된 파일을 모델이 위치한 PVC 위치로 복사하십시오.참고: 이 스크립트는 세 개의 파일을 생성합니다:
config.json,model.safetensors, 그리고tsfm_config.json. 이 파일들 중 일부를 이전에 생성한 적이 있다면, 기존 파일을 덮어쓸 수 있습니다.