Adición de modelos de cimentación personalizados a watsonx.ai Lightweight Engine
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.
Requisitos previos
El IBM watsonx.ai El servicio debe instalarse en modo de motor liviano.
- The list of files for the model must contain
config.jsonandtokenizer.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.
| 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 |
- 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
- Sube el modelo.
Siga los pasos del procedimiento Configuración del almacenamiento y carga de la modelo.
Tome nota de la
pvc_namepara 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. - 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.
- Para registrar el modelo de base personalizado, aplique elConfigMap archivo usando el siguiente comando:
El operador del servicio recoge la información de configuración y la aplica a su clúster.oc apply -f configmap.yml - Puede verificar el estado del servicio usando el siguiente comando. Cuando
Completedse devuelve, los modelos de base personalizados están listos para su uso.oc get watsonxaiifm -n ${PROJECT_CPD_INST_OPERANDS}
Creando un ConfigMap archivo
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: 1La 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: |
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: |
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
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: 1Qué 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.