Configuración del almacenamiento y carga de un modelo ubicado en Hugging Face
Siga estos pasos para cargar un modelo base que se encuentra en Hugging Face al almacenamiento PVC.
Requisitos previos
Algunas de las variables de entorno que se utilizan en los fragmentos de código de este documento son variables globales que se configuran durante la instalación. Para obtener más información, consulte Configuración de las variables de entorno de instalación.
Para configurar el almacenamiento y cargar un modelo que se encuentra en Hugging Face :
- Busca el nombre del modelo en el Hugging Face sitio web.
- Configurar las variables de entorno básicas:
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" - Clona el modelo.
Después de clonar el modelo, comprueba el nombre de la carpeta creada.git clone --no-checkout https://${HF_USERNAME}:${HF_TOKEN}@huggingface.co/${MODEL_NAME} - Comprueba el tamaño del modelo. Si tiene Git Large File Storage (
git lfs) instalado en su entorno, vaya a la carpeta que contiene su modelo y compruebe el tamaño del modelo:
Salida:git lfs ls-files -s
Si no tieneroot@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 lfsinstalado en su entorno, debe obtener esta información del generador de modelos o del repositorio donde se encontraba originalmente el modelo. En el caso de los modelos que se encuentran en Hugging Face, todos los tamaños de archivo son visibles al hacer clic en el nombre del modelo y seleccionar la pestaña Archivos y versiones. - Calcule el tamaño total del modelo y añada un margen del 100 % al resultado. Por ejemplo, si el tamaño del modelo es 14.5 GB, el tamaño del PVC que creará será de 29 GB. Establezca el tamaño del modelo como una variable de entorno:
export MODEL_SIZE="<calculated model size>" - Cree el almacenamiento
PersistentVolumeClaims(PVC) para su modelo de base personalizado en su clúster.En primer lugar, establezca el nombre del nuevo PVC como variable de entorno:
export PVC_NAME="<The name of the new PVC>"A continuación, ejecute este código:
Para obtener más información sobre cómo crear un nuevo PVC o utilizar un PVC existente con volúmenes de almacenamiento, consulte Administración de volúmenes de almacenamiento.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 - Después de crear el PVC, espere dos minutos y luego ejecute este comando para verificar que el PVC esté vinculado:
Resultado esperado:oc get pvc ${PVC_NAME} -n ${PROJECT_CPD_INST_OPERANDS} -o jsonpath='{.status.phase}'Bound - Codifica tu Hugging Face token en
base64:ENCODED_TOKEN=`echo -n ${HF_TOKEN} | base64` - Cree el secreto en su clúster:
En primer lugar, establezca el nombre del nuevo secreto:
export SECRET_NAME="<The name of the new secret>"A continuación, ejecute este código:
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 - Establezca
nameytagde la imagen Docker como variables de entorno.export IMAGE_NAME="http://registry.redhat.io/rhoai/odh-vllm-cuda-rhel9@sha256:751e2359439161babb9ad8e93e16251888a8c07aed895ffa55e4dfaf2a45f89d" - Cree y ejecute una tarea que descargue el modelo desde Hugging Face y, a continuación, convierta su modelo a los formatos
safetensorfast-tokenizery.En primer lugar, configure una variable de entorno para el nombre de su trabajo:
export DOWN_AND_CONV_JOB_NAME="<Name of the job>"A continuación, ejecute este código:
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 - Verifique que se haya creado el trabajo:
oc get job ${DOWN_AND_CONV_JOB_NAME} -n ${PROJECT_CPD_INST_OPERANDS}Salida prevista:
NAME COMPLETIONS DURATION AGE <job name> 1/1 xx xxPor último, comprueba el estado del trabajo:
oc get job ${DOWN_AND_CONV_JOB_NAME} -n ${PROJECT_CPD_INST_OPERANDS} -o jsonpath='{.status.conditions[?(@.type=="Complete")].status}'Salida prevista:
True Si su modelo es un modelo de series temporales, es posible que sea necesario un paso adicional. Consulte Generar el tsfm_config.json archivo para modelos de series temporales.
Para los modelos que utilizan la API de chat, puede sobrescribir la plantilla de chat estándar que se proporciona con el modelo. Para que esto sea posible, primero descargue una plantilla alternativa preparada por los creadores del modelo. A continuación, súbelo a la misma ubicación en la que se encuentra el
config.jsonarchivo (carpeta raíz).
Generación del tsfm_config.json archivo para modelos de series temporales
tsfm_config.json archivo. Los modelos de series temporales alojados en Hugging Face (model_type: tinytimemixer) no pueden incluir este archivo. Si el archivo no está presente cuando se descarga e implementa el modelo, el pronóstico fallará. Si no ve este archivo en el directorio del modelo, siga estos pasos:- Nota:
Para generar los archivos, debe tener Python instalada la versión 3.9 o superior en su entorno.
Dado que es necesario instalar un paquete, si está trabajando en un entorno aislado, debe ejecutar el script en un equipo que tenga acceso a Internet y, a continuación, transferir los archivos generados a su entorno aislado.
- Ejecute este código para instalar dos paquetes necesarios en su máquina local:
pip3 install granite-tsfm==0.2.27 pip3 install ibm-cos-sdk - Cree y ejecute un Python script que cree el archivo que falta:
Este código guardará los archivos en elfrom 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)ttmdirectorio. - Copie los archivos generados a la ubicación PVC donde se encuentra su modelo.Nota: El script genera tres archivos:
config.json,model.safetensors, ytsfm_config.json. Si ya ha generado algunos de estos archivos anteriormente, puede sobrescribir los archivos antiguos.