Adición de modelos de cimentación personalizados a watsonx.ai Lightweight Engine

Si el conjunto de modelos curados en ' IBM watsonx.ai ' no incluye el modelo base que desea utilizar para la inferencia de su instalación ' watsonx.ai lightweight engine ', puede instalar su propio modelo personalizado.

Para revisar los modelos de cimientos comisariados que están disponibles con " IBM watsonx.ai " y comprobar si un modelo existente podría satisfacer sus necesidades, consulte " Modelos de cimientos en " IBM " watsonx.ai.

Importante: Si instaló el completo IBM watsonx.ai servicio, debe seguir diferentes pasos para agregar modelos de cimentación personalizados. Para obtener más información, consulte Despliegue de modelos de base personalizados en IBM watsonx.ai.

Requisitos previos

El IBM watsonx.ai El servicio debe instalarse en modo de motor liviano.

El modelo de base que agregue debe cumplir los siguientes requisitos:
  • The list of files for the model must contain config.json and tokenizer.json
  • Las ponderaciones del modelo deben tener el formato " safetensors ".

Arquitecturas de modelo de base soportadas

Para verificar la arquitectura de un modelo de cimentación, encuentre elconfig.json archivo para el modelo de cimentación y luego verifique elmodel_type valor.

La siguiente tabla enumera los tipos de modelos admitidos por elwatsonx.ai lightweight engine .
Tipo de modelo Métodos de cuantificación admitidos Marco de implementación Atención flash
bloom No es aplicable tgis_nativo falso
codegen No es aplicable transformadores_hf No es aplicable
halcón No es aplicable tgis_nativo true
gemma2 No es aplicable No es aplicable No es aplicable
gpt_bigcode GPTQ tgis_nativo true
gpt_neox No es aplicable tgis_nativo true
gptj No es aplicable transformadores_hf No es aplicable
llama GPTQ tgis_nativo true
llama2 GPTQ tgis_nativo true
mistral No es aplicable transformadores_hf No es aplicable
mixtral GPTQ No es aplicable No es aplicable
mpt No es aplicable transformadores_hf No es aplicable
mt5 No es aplicable transformadores_hf No es aplicable
nemotron No es aplicable No es aplicable No es aplicable
olmo No es aplicable No es aplicable No es aplicable
Caqui No es aplicable No es aplicable No es aplicable
phi No es aplicable No es aplicable No es aplicable
phi3 No es aplicable No es aplicable No es aplicable
qwen2 AWQ No es aplicable No es aplicable
esfinge No es aplicable No es aplicable No es aplicable
t5 No es aplicable tgis_nativo falso
Puede consultar la atención flash y la información de despliegue de los distintos tipos de modelo en la tabla para añadirla al archivo ConfigMap que defina para el modelo de base personalizado.
Marco de implementación
Especifica la biblioteca que se utilizará para cargar el modelo de base. Aunque algunos modelos básicos admiten más de un método de implementación, la tabla enumera el marco de implementación en el que los modelos básicos con la arquitectura especificada funcionan mejor.
Atención flash
La atención flash es un mecanismo que se utiliza para escalar modelos basados en transformadores de manera más eficiente y permitir una inferencia más rápida. Para alojar el modelo correctamente, el servicio necesita saber si el modelo utiliza el mecanismo de atención flash.
Métodos de cuantificación
La cuantificación es un proceso que reduce la cantidad de recursos informáticos y memoria utilizados al inferir un modelo de base. Puede establecer los siguientes métodos de cuantificación para los modelos de base con las arquitecturas que se enumeran
  • Cuantificación posterior al entrenamiento para transformadores generativos preentrenados (GPTQ)
  • Cuantificación consciente de activación (AWQ)

Procedimiento

Un administrador del sistema debe completar estos pasos para agregar un modelo de base personalizado al IBM watsonx.ai motor ligero.
  1. Sube el modelo.

    Siga los pasos del procedimiento Configuración del almacenamiento y carga de la modelo.

    Tome nota de lapvc_name para el reclamo de volumen persistente donde almacena los archivos fuente del modelo descargado.

    Importante: Complete solo las tareas de configuración del almacenamiento y descarga del modelo y luego regrese a este procedimiento. Otros pasos en las instrucciones de instalación del servicio completo describen cómo crear una implementación para alojar el modelo básico personalizado. No es necesario configurar una implementación para utilizar modelos básicos personalizados desde unwatsonx.ai lightweight engine instalación.
  2. Crear unConfigMap archivo para el modelo de base personalizado.

    ConfigMapLos archivos son utilizados por elRed Hat® OpenShift® AI capa del servicio para servir información de configuración a contenedores independientes que se ejecutan en pods o a otros componentes del sistema, como controladores. Ver Creando un ConfigMap archivo.

  3. Para registrar el modelo de base personalizado, aplique elConfigMap archivo usando el siguiente comando:
    oc apply -f configmap.yml
    El operador del servicio recoge la información de configuración y la aplica a su clúster.
  4. Puede verificar el estado del servicio usando el siguiente comando. CuandoCompleted se devuelve, los modelos de base personalizados están listos para su uso.
    oc get watsonxaiifm -n ${PROJECT_CPD_INST_OPERANDS}

Creando un ConfigMap archivo

Crear unConfigMap archivo para el modelo de base personalizado copiando la siguiente plantilla y luego reemplazando las variables en la plantilla con los valores apropiados para su modelo de base.
apiVersion: v1
kind: ConfigMap
metadata:
  name: <model name with dash as delimiter>
  labels:
    syom: watsonxaiifm_extra_models_config
data:
  model: |
    <model name with underscore as delimiter>:
      pvc_name: <pvc where model is downloaded>
      pvc_size: <size of pvc where model is downloaded>
      isvc_yaml_name: isvc.yaml.j2
      dir_name: <directory inside of pvc where model content is downloaded>
      force_apply: no
      command: ["text-generation-launcher"]
      serving_runtime: tgis-serving-runtime
      storage_uri: pvc://<pvc where model is downloaded>/
      env:
        - name: MODEL_NAME
          value: /mnt/models
        - name: CUDA_VISIBLE_DEVICES
          value: "0" # if sharding, change to the value of shard. If sharding in 2, specify "0,1". If sharding in 4, specify "0,1,2,3".
        - name: TRANSFORMERS_CACHE
          value: /mnt/models/
        - name: HUGGINGFACE_HUB_CACHE
          value:  /mnt/models/
        - name: DTYPE_STR
          value: "<value>"
        - name: MAX_SEQUENCE_LENGTH
          value: "<value>"
        - name: MAX_BATCH_SIZE
          value: "<value>"
        - name: MAX_CONCURRENT_REQUESTS
          value: "<value>"
        - name: MAX_NEW_TOKENS
          value: "<value>"
        - name: FLASH_ATTENTION
          value: "<value>"
        - name: DEPLOYMENT_FRAMEWORK
          value: "<value>"
        - name: HF_MODULES_CACHE
          value: /tmp/huggingface/modules
      annotations:
        cloudpakId: 5e4c7dd451f14946bc298e18851f3746
        cloudpakName: IBM watsonx.ai
        productChargedContainers: All
        productCloudpakRatio: "1:1"
        productID: 3a6d4448ec8342279494bc22e36bc318
        productMetric: VIRTUAL_PROCESSOR_CORE
        productName: IBM Watsonx.ai
        productVersion: <watsonx.ai ifm version>
        cloudpakInstanceId: <cloudpak instance id>
      labels_syom:
        app.kubernetes.io/managed-by: ibm-cpd-watsonx-ai-ifm-operator
        app.kubernetes.io/instance: watsonxaiifm
        app.kubernetes.io/name: watsonxaiifm
        icpdsupport/addOnId: watsonx_ai_ifm
        icpdsupport/app: api
        release: watsonxaiifm
        icpdsupport/module: <model name with dash as delimiter>
        app: text-<model name with dash as delimiter> 
        component: fmaas-inference-server # wont override value predictor
        bam-placement: colocate
        syom_model: <model name with single hyphens as delimiters, except for the first delimiter, which uses two hyphens>
      args:
        - "--port=3000"
        - "--grpc-port=8033"
        - "--num-shard=1" # shard setting for the GPU (2,4, or 8)
      wx_inference_proxy:
        <model id>:
          enabled:
          - "true"
          label: "<label of model>"
          provider: "< provider of model>"
          source: "Hugging Face"
          tags:
          - consumer_public
          # Description needs to be updated
          short_description: "<short discription of model>"
          long_description: "<long discription of model>"
          task_ids:
          - question_answering
          - generation
          - summarization
          - classification
          - extraction
          tasks_info:
            question_answering:
              task_ratings:
                quality: 0
                cost: 0
            generation:
              task_ratings:
                quality: 0
                cost: 0
            summarization:
              task_ratings:
                quality: 0
                cost: 0
            classification:
              task_ratings:
                quality: 0
                cost: 0
            extraction:
              task_ratings:
                quality: 0
                cost: 0
          min_shot_size: 1
          tier: "class_2"
          number_params: "13b"
          lifecycle:
            available:
              since_version: "<first watsonx.ai IFM version where this model is supported>"
    <model name with underscore as delimiter>_resources:
      limits:
        cpu: "2"
        memory: 128Gi
        nvidia.com/gpu: "1" # shard setting for the GPU (2,4,or 8)
        ephemeral-storage: 1Gi
      requests:
        cpu: "1"
        memory: 4Gi
        nvidia.com/gpu: "1" # shard setting for the GPU (2,4,or 8)
        ephemeral-storage: 10Mi
    <model name with underscore as delimiter>_replicas: 1
La siguiente tabla enumera las variables que puede reemplazar en la plantilla.
ConfigMap campo Descripción
metadata.name Nombre del modelo con guiones como delimitadores. Por ejemplo, si el nombre del modelo estiiuae/falcon-7b , especificartiiuae-falcon-7b .
data.model. Nombre del modelo con guiones bajos como delimitadores <nombre_modelo_completo>. Por ejemplo, si el nombre del modelo estiiuae/falcon-7b , especificartiiuae_falcon_7b .
data.model.<full_model_name>.pvc_name Reclamación de volumen persistente donde se almacenan los archivos fuente del modelo. Utilizar elpvc_name que anotó en un paso anterior. Por ejemplo, tiiuae-falcon-7b-pvc
data.model.<full_model_name>.pvc_size Tamaño de la reclamación de volumen persistente donde se almacenan los archivos fuente del modelo. Por ejemplo, 60Gi.
data.model.<full_model_name>.dir_name Directorio donde se almacena el contenido del modelo. Este valor coincide con elMODEL_PATH del trabajo de descarga del modelo. Por ejemplo, models--tiiuae-falcon-7b
data.model.<full_model_name>.storage_uri Identificador de recurso universal para el directorio donde se almacenan los archivos fuente del modelo con la sintaxispvc://<pvc where model is downloaded>/ . Por ejemplo, pvc://tiiuae-falcon-7b-pvc/.
data.model.<full_model_name>.env.DTYPE_STR Tipo de datos de cadenas de texto que el modelo puede procesar. Por ejemplo, float16.

Para obtener más información sobre los valores admitidos, consulte Parámetros globales para modelos de cimentación personalizados.

data.model.<full_model_name>.env.MAX_BATCH_SIZE Tamaño máximo de lote

Para obtener más información sobre los valores admitidos, consulte Parámetros globales para modelos de cimentación personalizados.

data.model.<full_model_name>.env.MAX_CONCURRENT_REQUESTS Número máximo de solicitudes simultáneas que el modelo puede manejar. Por ejemplo, 1024.

Para obtener más información sobre los valores admitidos, consulte Parámetros globales para modelos de cimentación personalizados.

data.model.<full_model_name>.env.MAX_NEW_TOKENS Número máximo de tokens que el modelo puede generar para una solicitud de inferencia de texto. Por ejemplo, 2047.

Para obtener más información sobre los valores admitidos, consulte Parámetros globales para modelos de cimentación personalizados.

data.model.<full_model_name>.env. FLASH_ATTENTION Especifique el valor del Atención flash columna de la Arquitecturas de modelo de base soportadas mesa. Si el valor es No aplica, elimine esta entrada del archivo de mapa de configuración.
data.model.<full_model_name>.env.DEPLOYMENT_FRAMEWORK Especifique el valor del Marco de implementación columna de la Arquitecturas de modelo de base soportadas mesa. Si el valor es No aplica, elimine esta entrada del archivo de mapa de configuración.
data.model.<full_model_name>.annotations. productVersion El IBM watsonx.ai Versión del operador del servicio. Por ejemplo, 9.1.0.

Para obtener este valor, utilice el siguiente comando:oc get watsonxaiifm watsonxaiifm-cr -o jsonpath="{.spec.version}"

data.model.<full_model_name>.annotations.cloudpakInstanceId El ID de la instancia ' IBM® Software Hub '. Por ejemplo, b0871d64-ceae-47e9-b186-6e336deaf1f1.

Para obtener este valor, utilice el siguiente comando:oc get cm product-configmap -o jsonpath="{.data.CLOUD_PAK_INSTANCE_ID}"

data.model.<full_model_name>.labels_syom.icpdsupport/module Nombre del modelo con guiones como delimitadores. Por ejemplo, si el nombre del modelo estiiuae/falcon-7b , especificartiiuae-falcon-7b
data.model.<full_model_name>.labels_syom.app Nombre del modelo con guiones como delimitadores y prefijotext- . Por ejemplo, si el nombre del modelo estiiuae/falcon-7b , especificartext-tiiuae-falcon-7b .
data.model.<full_model_name>.labels_syom.syom_model Nombre del modelo con guiones simples como delimitadores, excepto el primer delimitador, que utiliza dos guiones. Por ejemplo, tiiuae--falcon-7b.
data.model.<full_model_name>.wx_inference_proxy. ID del modelo (<full/model_name> ). Por ejemplo,tiiuae/falcon-7b
data.model.<full_model_name>.wx_inference_proxy.<full/model_name>.label Nombre del modelo sin prefijo de proveedor. Por ejemplo, falcon-7b.
data.model.<full_model_name>.wx_inference_proxy.<full/model_name>.provider Proveedor de modelos. Por ejemplo: tiiuae
data.model.<full_model_name>.wx_inference_proxy.<full/model_name>.short discription of model Breve descripción del modelo en menos de 100 caracteres.
data.model.<full_model_name>.wx_inference_proxy.<full/model_name>.long discription of model Larga descripción del modelo.
data.model.<full_model_name>.wx_inference_proxy.<full/model_name>.min_shot_size tamaño mínimo de disparo
data.model.<full_model_name>.wx_inference_proxy.<full/model_name>.tier Nivel de modelo.
data.model.<full_model_name>.wx_inference_proxy.<full/model_name>.number_params Número de parámetros del modelo. Por ejemplo: 7b
data.model.<full_model_name>.wx_inference_proxy.<full/model_name>.lifecycle.available.since_version La primera IBM watsonx.ai Versión del operador de servicio en la que se agregó el modelo. Por ejemplo,9.1.0 .

Ejemplo de archivo ConfigMap

El siguiente archivo de ejemplo ConfigMap define el modelo de base personalizado tiiuae-falcon-7b.
apiVersion: v1
kind: ConfigMap
metadata:
  name: tiiuae-falcon-7b
  labels:
    syom: watsonxaiifm_extra_models_config
data:
  model: |
    tiiuae_falcon_7b:
      pvc_name: tiiuae-falcon-7b-pvc
      pvc_size: 60Gi
      isvc_yaml_name: isvc.yaml.j2
      dir_name: model
      force_apply: no
      command: ["text-generation-launcher"]
      serving_runtime: tgis-serving-runtime
      storage_uri: pvc://tiiuae-falcon-7b-pvc/
      env:
        - name: MODEL_NAME
          value: /mnt/models
        - name: CUDA_VISIBLE_DEVICES
          value: "0"
        - name: TRANSFORMERS_CACHE
          value: /mnt/models/
        - name: HUGGINGFACE_HUB_CACHE
          value: /mnt/models/
        - name: DTYPE_STR
          value: "float16"
        - name: MAX_SEQUENCE_LENGTH
          value: "2048"
        - name: MAX_BATCH_SIZE
          value: "256"
        - name: MAX_CONCURRENT_REQUESTS
          value: "1024"
        - name: MAX_NEW_TOKENS
          value: "2047"
        - name: FLASH_ATTENTION
          value: "true"
        - name: DEPLOYMENT_FRAMEWORK
          value: "tgis_native"
        - name: HF_MODULES_CACHE
          value: /tmp/huggingface/modules
      annotations:
        cloudpakId: 5e4c7dd451f14946bc298e18851f3746
        cloudpakName: IBM watsonx.ai
        productChargedContainers: All
        productCloudpakRatio: "1:1"
        productID: 3a6d4448ec8342279494bc22e36bc318
        productMetric: VIRTUAL_PROCESSOR_CORE
        productName: IBM Watsonx.ai
        productVersion: 9.1.0
        cloudpakInstanceId: b0871d64-ceae-47e9-b186-6e336deaf1f1
      labels_syom:
        app.kubernetes.io/managed-by: ibm-cpd-watsonx-ai-ifm-operator
        app.kubernetes.io/instance: watsonxaiifm
        app.kubernetes.io/name: watsonxaiifm
        icpdsupport/addOnId: watsonx_ai_ifm
        icpdsupport/app: api
        release: watsonxaiifm
        icpdsupport/module: tiiuae-falcon-7b
        app: text-tiiuae-falcon-7b
        component: fmaas-inference-server # wont override value predictor
        bam-placement: colocate
        syom_model: "tiiuae--falcon-7b"
      args:
        - "--port=3000"
        - "--grpc-port=8033"
        - "--num-shard=1"
      volumeMounts:
        - mountPath: /opt/caikit/prompt_cache
          name: prompt-cache-dir
          subPath: prompt_cache
      volumes:
        - name: prompt-cache-dir
          persistentVolumeClaim:
            claimName: fmaas-caikit-inf-prompt-tunes-prompt-cache
      wx_inference_proxy:
        tiiuae/falcon-7b:
          enabled:
          - "true"
          label: "falcon-7b"
          provider: "tiiuae"
          source: "Hugging Face"
          functions:
          - text_generation
          tags:
          - consumer_public
          short_description: "A 7B parameters causal decoder-only model built by TII based on Falcon-7B and finetuned on a mixture of chat and instruct datasets."
          long_description: "Out-of-Scope Use: Production use without adequate assessment of risks and mitigation; any use cases which may be considered irresponsible or harmful./n/nBias, Risks, and Limitations: Falcon-7B-Instruct is mostly trained on English data, and will not generalize appropriately to other languages. Furthermore, as it is trained on a large-scale corpora representative of the web, it will carry the stereotypes and biases commonly encountered online./n/nRecommendations:Users of Falcon-7B-Instruct should develop guardrails and take appropriate precautions for any production use."
          task_ids:
          - question_answering
          - generation
          - summarization
          - extraction
          tasks_info:
            question_answering:
              task_ratings:
                quality: 0
                cost: 0
            generation:
              task_ratings:
                quality: 0
                cost: 0
            summarization:
              task_ratings:
                quality: 0
                cost: 0
            extraction:
              task_ratings:
                quality: 0
                cost: 0
          min_shot_size: 1
          tier: "class_2"
          number_params: "7b"
          lifecycle:
            available:
              since_version: "9.1.0"
    tiiuae_falcon_7b_resources:
      limits:
        cpu: "2"
        memory: 60Gi
        nvidia.com/gpu: "1"
        ephemeral-storage: 1Gi
      requests:
        cpu: "1"
        memory: 60Gi
        nvidia.com/gpu: "1"
        ephemeral-storage: 10Mi
    tiiuae_falcon_7b_replicas: 1

Qué hacer a continuación

Para probar el modelo de base personalizado que ha añadido a una instalación watsonx.ai lightweight engine, envíe una solicitud de inferencia al modelo mediante programación. Para más detalles, consulta Trabajar con el motor ligero watsonx.ai.