Registrazione di modelli di fondazione personalizzati per l'implementazione globale

È possibile distribuire modelli di base personalizzati a livello globale utilizzando l'operatore watsonx.ai™ Inference Frameworks Manager (IFM), che consente di rendere questi modelli disponibili da qualsiasi progetto o spazio, anziché essere vincolati a un progetto o spazio specifico. Ciò consente alle aziende con GPU limitate di sfruttare i vantaggi dei modelli di base personalizzati senza la necessità di distribuire un'istanza separata del modello in ogni progetto o spazio. Implementando modelli di base personalizzati a livello globale, è possibile fornire alle aziende una soluzione scalabile che consenta loro di utilizzare modelli personalizzati in più progetti e spazi.

Prerequisiti

  • Se desideri abilitare la funzionalità di chat testuale, il modello di base personalizzato che desideri distribuire deve includere il modello di chat come parte del file di configurazione tokenizer_config.json del modello. Ad esempio, il file di configurazione del modello per il Llama-3.1-8B-Instruct modello include il modello di chat, come mostrato qui:un modello di chat di esempio utilizzato come parte del file di configurazione del modello

Architetture dei modelli supportati

È possibile implementare architetture di modelli di base personalizzate basate sul vLLM runtime a livello globale.

Le seguenti architetture modello sono supportate per l'implementazione a livello globale.

Tabella 1. Architetture dei modelli supportati: modelli generici
Famiglia di modelli Esempi di modelli di fondazione Metodo di quantizzazione supportato Tensori paralleli (supporto per più GPU) Configurazioni della distribuzione
bloom bigscience/bloom-3b, bigscience/bloom-560m N/D Vero Piccolo, medio e grande
exaone lgai-exaone/exaone-3.0-7.8B-Instruct N/D N Piccolo
falcon tiiuae/falcon-7b N/D Vero Piccolo, medio e grande
gemma google/gemma-2b N/D Vero Piccolo, medio e grande
gemma2 google/gemma-2-9b N/D Vero Piccolo, medio e grande
gpt_bigcode bigcode/starcoder, bigcode/gpt_bigcode-santacoder gptq Vero Piccolo, medio e grande
gpt_neox rinna/japanese-gpt-neox-small, EleutherAI/pythia-12b, databricks/dolly-v2-12b N/D Vero Piccolo, medio e grande
gptj EleutherAI/gpt-j-6b N/D N Piccolo
gpt2 gpt2, gpt2-xl N/D Vero Piccolo, medio e grande
granite ibm-granite/granite-3.0-8b-instruct, ibm-granite/granite-3b-code-instruct-2k, granite-8b-code-instruct, granite-7b-lab N/D N Piccolo
jais core42/jais-13b N/D Vero Piccolo, medio e grande
llama meta-llama/Meta-Llama-3-8B, meta-llama/Meta-Llama-3.1-8B-Instruct, llama-2-13b-chat-hf, TheBloke/Llama-2-7B-Chat-AWQ, ISTA-DASLab/Llama-2-7b-AQLM-2Bit-1x16-hf gptq Vero Piccolo, medio e grande
mistral mistralai/Mistral-7B-v0.3, neuralmagic/OpenHermes-2.5-Mistral-7B-marlin N/D N Piccolo
mixtral TheBloke/Mixtral-8x7B-v0.1-GPTQ, mistralai/Mixtral-8x7B-Instruct-v0.1 gptq N Piccolo
mpt mosaicml/mpt-7b, mosaicml/mpt-7b-storywriter, mosaicml/mpt-30b N/D N Piccolo
nemotron nvidia/Minitron-8B-Base N/D Vero Piccolo, medio e grande
olmo allenai/OLMo-1B-hf, allenai/OLMo-7B-hf N/D Vero Piccolo, medio e grande
persimmon adept/persimmon-8b-base, adept/persimmon-8b-chat N/D Vero Piccolo, medio e grande
phi microsoft/phi-2, microsoft/phi-1_5 N/D Vero Piccolo, medio e grande
phi3 microsoft/Phi-3-mini-4k-instruct N/D Vero Piccolo, medio e grande
qwen DeepSeek-R1 (distilled variant) N/D Vero Piccolo, medio e grande
qwen2 Qwen/Qwen2-7B-Instruct-AWQ AWQ Vero Piccolo, medio e grande
Tabella 2. Architetture dei modelli supportati: modelli di riconoscimento vocale automatico (ASR)
Famiglia di modelli Esempi di modelli di fondazione Metodo di quantizzazione supportato Tensori paralleli (supporto per più GPU) Configurazioni della distribuzione
whisper openai/whisper-small N/D N Piccolo, medio e grande
whisper openai/whisper-large-v3-turbo N/D N Piccolo, medio e grande
Tabella 3. Architetture dei modelli supportati: modelli di incorporamento e riclassificazione
Famiglia di modelli Esempi di modelli di fondazione Recupero semantico supportato Configurazioni della distribuzione
BGE BAAI/bge-reranker-v2-m3 Reranking Piccolo, medio e grande
E5 intfloat/multilingual-e5-large incorporamento e riclassificazione Piccolo, medio e grande
granite ibm/granite-embedding-107m-multilingual, ibm/granite-embedding-278m-multilingual inserimento Piccolo, medio e grande
Jina Reranker jinaai/jina-reranker-v2-base-multilingual Reranking Piccolo, medio e grande
MiniLM cross-encoder/ms-marco-minilm-l-12-v2 Reranking Piccolo, medio e grande
MiniLM sentence-transformers/all-minilm-l6-v2 incorporamento e riclassificazione Piccolo, medio e grande
Qwen Qwen/Qwen3-Embedding-0.6B incorporamento e riclassificazione Piccolo, medio e grande
slate ibm/slate-125m-english-rtrvr, ibm/slate-125m-english-rtrvr-v2, ibm/slate-30m-english-rtrvr, ibm/slate-30m-english-rtrvr-v2 incorporamento e riclassificazione Piccolo, medio e grande

Procedura

Per implementare un modello di base personalizzato a livello globale, procedi come segue:
  1. Configura l'archivio PVC e carica il modello di fondazione personalizzato. Per ulteriori informazioni, consultare Configurazione dell'archiviazione e caricamento del modello.

    Prendi nota del pvc_name per la richiesta di volume persistente in cui archivi i file sorgente del modello scaricato.

  2. Creare un ConfigMap file per il modello di base personalizzato utilizzando il vLLM runtime.
     * oc create -f <config_map_file>
     Poll for the predictor pod to be in running state 1/1
     * hermes-2-pro-mistral-7b-predictor-654986d764-mrpt5                1/1     Running     0               25m
    Importante:
    1. È necessario specificare l'ID del modello in ConfigMap in minuscolo. L'ID del modello non può essere specificato in maiuscolo o camel case. L'ID del modello può contenere solo lettere, numeri e trattini bassi.
    2. È necessario impostare serving_runtime su vllm-serving-runtime per distribuire il modello di base personalizzato globale nel file Configmap.
    3. Per evitare conflitti di denominazione con i modelli di base forniti da IBM, utilizzare un nome univoco. Non utilizzare lo stesso model_id di un modello di base personalizzato fornito da IBM.
    4. È necessario impostare il global_custom_foundation_model parametro su true nel wx-inference-proxy ConfigMap.
    5. Per consentire agli ingegneri MLOps o Prompt di interagire con il modello di base personalizzato distribuito a livello globale utilizzando la funzionalità di chat, aggiungere la text_chat funzione nello stesso ConfigMap file creato per il modello di base personalizzato globale.

    ConfigMap I file vengono utilizzati dal Red Hat® OpenShift® AI livello del servizio per fornire informazioni di configurazione a container indipendenti che girano nei pod o ad altri componenti di sistema, come i controller.

    Per ulteriori informazioni, consulta Creazione di un file Config Map.
  3. Per registrare il modello di base personalizzato, applica il ConfigMap file utilizzando il seguente comando:
    oc apply -f configmap.yml
    L'operatore del servizio raccoglie le informazioni di configurazione e le applica al cluster.
  4. È possibile verificare lo stato del servizio utilizzando il seguente comando. Quando Completed viene restituito, i modelli di base personalizzati sono pronti per l'uso.
    oc get watsonxaiifm -n ${PROJECT_CPD_INST_OPERANDS}

Creazione di un ConfigMap file

La tabella seguente elenca le variabili da sostituire nell'esempio ConfigMaps.
ConfigMap campo Descrizione
metadata.name Nome del modello con trattini come delimitatori. Ad esempio, se il nome del modello è tiiuae/falcon-7b, specificare tiiuae-falcon-7b.
data.model. Nome del modello con trattini bassi come delimitatori <nome_completo_del_modello>. Ad esempio, se il nome del modello è tiiuae/falcon-7b, specificare tiiuae_falcon_7b.
data.model.<full_model_name>.pvc_name Richiesta di volume persistente in cui sono archiviati i file sorgente del modello. Utilizza il pvc_name che hai annotato in un passaggio precedente. Ad esempio, tiiuae-falcon-7b-pvc
data.model.<full_model_name>.pvc_size Dimensione dello spazio di archiviazione persistente in cui sono memorizzati i file sorgente del modello. Ad esempio, 60Gi.
data.model.<full_model_name>.image Se il modello che desideri utilizzare non è ancora supportato dai server di inferenza standard, puoi sovrascrivere le impostazioni standard e utilizzare la tua immagine di runtime di inferenza personalizzata. Le immagini elencate nel registro Open Shift sono state testate e ne è stata confermata la funzionalità. È anche possibile provare altre immagini, ma non sono ufficialmente supportate da IBM.
data.model.<full_model_name>.env.DTYPE_STR Tipo di dati delle stringhe di testo che il modello è in grado di elaborare. Ad esempio, float16.

Per ulteriori informazioni sui valori supportati, consulta Parametri globali per modelli di base personalizzati.

data.model.<full_model_name>.env.MAX_NEW_TOKENS Numero massimo di token che il modello può generare per una richiesta di inferenza testuale. Ad esempio, 2047.

Per ulteriori informazioni sui valori supportati, consulta Parametri globali per modelli di base personalizzati.

data.model.<full_model_name>.env. ENABLE_AUTO_TOOL_CHOICE Indica vLLM che si desidera abilitare il modello a generare le proprie chiamate di strumenti, quando opportuno.
data.model.<full_model_name>.env. TOOL_CALL_PARSER Parser dello strumento da utilizzare. Per un elenco dei parser di strumenti adatti a vari modelli di base, vedere https://docs.vllm.ai/en/stable/features/tool_calling.html#automatic-function-calling.
data.model.<full_model_name>.annotations.productVersion La versione dell'operatore del servizio. Ad esempio, 9.1.0.

Per ottenere questo valore, utilizzare il seguente comando: oc get watsonxaiifm watsonxaiifm-cr -o jsonpath="{.spec.version}"

data.model.<full_model_name>.annotations.cloudpakInstanceId L'ID IBM® Software Hub dell'istanza. Ad esempio, b0871d64-ceae-47e9-b186-6e336deaf1f1.

Per ottenere questo valore, utilizzare il seguente comando: oc get cm product-configmap -o jsonpath="{.data.CLOUD_PAK_INSTANCE_ID}"

data.model.<full_model_name>.annotations.model-id ID del modello. Ad esempio, model-id: "meta-llama/llama-3-1-8b"
data.model.<full_model_name>.labels_syom.icpdsupport/module Nome del modello con trattini come delimitatori. Ad esempio, se il nome del modello è tiiuae/falcon-7b, specificare tiiuae-falcon-7b
data.model.<full_model_name>.labels_syom.app Nome del modello con trattini come delimitatori e prefisso text-. Ad esempio, se il nome del modello è tiiuae/falcon-7b, specificare text-tiiuae-falcon-7b.
data.model.<full_model_name>.labels_syom.syom_model Nome del modello con trattini singoli come delimitatori, ad eccezione del primo delimitatore, che utilizza due trattini. Ad esempio, tiiuae--falcon-7b.
data.model.<full_model_name>.wx_inference_proxy. ID modello (<full/model_name>). Ad esempio, tiiuae/falcon-7b
data.model.<full_model_name>.wx_inference_proxy.<model_id>.label Nome del modello senza prefisso del fornitore. Ad esempio, falcon-7b.
data.model.<full_model_name>.wx_inference_proxy.<model_id>.provider Fornitore di modelli. Ad esempio, tiiuae
data.model.<full_model_name>.wx_inference_proxy.<model_id>.short_description Breve descrizione del modello in meno di 100 caratteri.
data.model.<full_model_name>.wx_inference_proxy.<model_id>.long_discription Descrizione dettagliata del modello.
data.model.<full_model_name>.wx_inference_proxy.<model_id>.number_params Numero di parametri del modello. Ad esempio, 7b
data.model.<full_model_name>.wx_inference_proxy.<model_id>.lifecycle.available.since_version La prima versione dell'operatore di servizio in cui è stato aggiunto il modello. Ad esempio, 9.1.0.
data.model.<full_model_name>.wx_inference_proxy.<model_id>.functions Funzione modello. Opzioni disponibili: text_generation e text_chat, embedding, rerank, audio_transcriptions. È necessario verificare le funzioni supportate prima di modificare il ConfigMap. Per ulteriori dettagli, consultare la scheda tecnica ufficiale del modello.
Nota:

text_chat Si applica solo ai modelli che utilizzano il vLLM runtime e soddisfano tutti i prerequisiti relativi alla chat testuale. Per ulteriori informazioni sui modelli supportati, consultare la Tabella 1.

data.model.<full_model_name>.wx_inference_proxy.<model_id>.tags Eventuali tag applicabili. Deve contenere questo tag: vllm_runtime
data.model.<full_model_name>_resources.limits La quantità massima di risorse che un modello di base personalizzato può utilizzare.
  • CPU : Core CPU assegnati
  • memoria : RAM assegnata
  • nvidia.com/gpu : frammenti GPU
  • memoria temporanea : spazio di archiviazione su disco locale (temporaneo)
Per ulteriori informazioni, consultare le Linee guida sull'utilizzo delle risorse.
data.model.<full_model_name>_resources.requests La quantità minima (garantita) di ciascuna risorsa che un modello di base personalizzato otterrà.
  • CPU : Core CPU assegnati
  • memoria : RAM assegnata
  • nvidia.com/gpu : frammenti GPU
  • memoria temporanea : spazio di archiviazione su disco locale (temporaneo)
Per ulteriori informazioni, consultare le Linee guida sull'utilizzo delle risorse.
data.model.<full_model_name>.env.CUDA_VISIBLE_DEVICES Elenco separato da virgole degli indici GPU che il runtime LLM deve utilizzare. Per esempio
  • 0,1 espone le GPU 0 e 1
  • 0 espone solo la prima GPU
Solo le GPU elencate qui saranno disponibili per il caricamento dei modelli e l'inferenza. Assicurati che il numero di indici corrisponda al nvidia.com/gpu conteggio configurato sia in limits che requests in nella tua Kubernetes spec.
data.model.<full_model_name>.env.NUM_GPUS Il numero totale di GPU che il runtime LLM inizializzerà. Questo numero deve essere uguale al numero di indici in CUDA_VISIBLE_DEVICES. Ad esempio:
  • Se CUDA_VISIBLE_DEVICES è impostato su 0,1, impostare NUM_GPUS=2
  • Se è esposta solo la GPU 0, impostare NUM_GPUS=1
Assicurati che questo valore corrisponda al nvidia.com/gpu conteggio specificato sia in limits che requests in della configurazione delle risorse del tuo pod.
data.model.<full_model_name>.env.LANGUAGE Lingua supportata per questo modello
data.model.<full_model_name>.env.MAX_LOG_LEN Numero massimo di caratteri di prompt o numeri ID di prompt da stampare nel log
data.model.<full_model_name>.env.VLLM_CACHE_ROOT Directory principale per i file della cache.

File di ConfigMap esempio

Crea un ConfigMap file per il modello di base personalizzato copiando uno dei seguenti esempi ConfigMaps e sostituendo le variabili nel modello con i valori appropriati per il tuo modello di base.

Il seguente file di ConfigMap esempio definisce il modello meta-llama/Meta-Llama-3-8B-Instruct di base personalizzato.
apiVersion: v1
kind: ConfigMap
metadata:
  name: meta-llama-3-1-8b-instruct
  namespace: cpd-instance
  labels:
    syom: watsonxaiifm_extra_models_config
  finalizers:
    - watsonxaiifm.cpd.ibm.com/finalizer
data:
  model: |
    meta_llama_3_1_8b_instruct:
      pvc_name: meta-llama-3-1-8b-instruct-pvc
      pvc_size: 62Gi
      command: []
      isvc_yaml_name: isvc.yaml.j2
      dir_name: model
      force_apply: no
      serving_runtime: vllm-serving-runtime
      storage_uri: pvc://meta-llama-3-1-8b-instruct-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: "2048"
        - name: FLASH_ATTENTION
          value: "true"
        - name: DEPLOYMENT_FRAMEWORK
          value: "tgis_native"
        - name: HF_MODULES_CACHE
          value: /tmp/huggingface/modules
        - name: SERVED_MODEL_NAME
          value: meta-llama/meta-llama-3-1-8b-instruct
        - name: NUM_GPUS
          value: "1"
        - name: PORT
          value: "3000"
        - name: VLLM_CACHE_ROOT # Additional environment parameters for 5.3.0
          value: /tmp/vllm_cache
      annotations:
        cloudpakId: 5e4c7dd451f14946bc298e18851f3746
        cloudpakName: IBM watsonx.ai
        productChargedContainers: All
        productCloudpakRatio: "1:1"
        productID: 3a6d4448ec8342279494bc22e36bc318
        productMetric: VIRTUAL_PROCESSOR_CORE
        productName: IBM Watsonx.ai
        productVersion: 12.0.0
        cloudpakInstanceId: cd686e30-7b77-4256-a9be-c25e97f5f838
        model-id: "meta-llama/meta-llama-3-1-8b-instruct" # Additional annotation for 5.3.0
      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: meta-llama-3-1-8b-instruct
        app: text-meta-llama-3-1-8b-instruct
        component: fmaas-inference-server
        bam-placement: colocate
        syom_model: meta--llama-3-1-8b-instruct
      args: []
      wx_inference_proxy:
        meta-llama/meta-llama-3-1-8b-instruct:
          global_custom_foundation_model: true
          enabled:
            - "true"
          label: "meta-llama-3-1-8b-instruct"
          provider: "meta-llama"
          source: "Hugging Face"
          functions:
            - text_generation
            - text_chat
          tags:
            - vllm_runtime  # Additional tags for 5.3.0
          short_description: "A large language model from Meta's LLaMA 3 series, fine-tuned to follow instructions and perform a wide range of natural language understanding and generation tasks."
          long_description: "A powerful 8-billion parameter model from Meta's LLaMA 3 series, specifically fine-tuned to enhance instruction-following capabilities, making it effective for a wide range of NLP tasks."
          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: "8b"
          lifecycle:
            available:
              since_version: "9.1.0"
    meta_llama_3_1_8b_instruct_resources:
      limits:
        cpu: "2"
        memory: 128Gi
        nvidia.com/gpu: "1"
        ephemeral-storage: 1Gi
      requests:
        cpu: "1"
        memory: 4Gi
        nvidia.com/gpu: "1"
        ephemeral-storage: 10Mi
    meta_llama_3_1_8b_instruct_replicas: 1

Esempio ConfigMap per modelli di riconoscimento vocale automatico (ASR):

apiVersion: v1
data:
  model: |
    whisper_tiny:
      pvc_name: <pvc name>
      svc_name: whisper-tiny
      pvc_size: 100Gi
      dir_name: .
      force_apply: "no"
      isvc_yaml_name: isvc.yaml.j2
      image: http://registry.redhat.io/rhoai/odh-vllm-cuda-rhel9@sha256:751e2359439161babb9ad8e93e16251888a8c07aed895ffa55e4dfaf2a45f89d
      serving_runtime: vllm-serving-runtime
      storage_uri: pvc://<pvc name>/      # keep the trailing dash after the pvc name
      annotations:
        model-id: "openai/whisper-tiny"
      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: whisper-tiny
        #app: text-llava-next-video-7b-hf
        component: fmaas-inference-server
        bam-placement: colocate
        syom_model: openai--whisper-tiny  # double dash after model provider name
      env:
        - name: SERVED_MODEL_NAME
          value: openai/whisper-tiny
        - name: VLLM_CACHE_ROOT
          value: /tmp/vllm_cache
        - name: MODEL_NAME
          value: /mnt/models
        - name: SERVED_MODEL_NAME
          value: openai/whisper-tiny
        - name: LANGUAGE
          value: "en"
        - name: NUM_GPUS
          value: "1"
        - name: CUDA_VISIBLE_DEVICES
          value: "0"
        - name: HUGGINGFACE_HUB_CACHE
          value: /mnt/models/
        - name: HF_MODULES_CACHE
          value: /tmp/huggingface/modules
        - name: PORT
          value: "3000"
        - name: MAX_LOG_LEN
          value: "100"
      volumeMounts:
        - name: home
          mountPath: /home/vllm
        - name: tmp
          mountPath: /tmp
        - name: shm
          mountPath: /dev/shm
      volumes:
        - name: home
          emptyDir: {}
        - name: tmp
          emptyDir: {}
        - name: shm
          emptyDir:
            medium: Memory
            sizeLimit: 4Gi
      wx_inference_proxy:
        openai/whisper-tiny:
          enabled:
          - "true"
          label: openai/whisper-tiny
          provider: IBM
          source: IBM
          functions:
          - audio_transcriptions
          short_description: Whisper is a Transformer based encoder-decoder model, also referred to as a sequence-to-sequence model. It was trained on 680k hours of labelled speech data annotated using large-scale weak supervision.
          long_description:  Whisper is a Transformer based encoder-decoder model, also referred to as a sequence-to-sequence model. It was trained on 680k hours of labelled speech data annotated using large-scale weak supervision.
          tags:
          - vllm_runtime
          - consumer_public
          min_shot_size: 1
          input_tier: class_14
          output_tier: class_15
          number_params: 805k
          lifecycle:
            available:
              since_version: 11.0.0
          versions:
          - version: 1.0.0
            since_version: 11.0.0
    whisper_tiny_resources:
      limits:
        cpu: "3"
        memory: 96Gi
        nvidia.com/gpu: "1"
        ephemeral-storage: 1Gi
      requests:
        cpu: "2"
        memory: 85Gi
        nvidia.com/gpu: "1"
        ephemeral-storage: 10Mi
    whisper_tiny_replicas: 1
kind: ConfigMap
metadata:
  finalizers:
  - watsonxaiifm.cpd.ibm.com/finalizer
  labels:
    syom: watsonxaiifm_extra_models_config
  name: whisper-tiny
Esempio ConfigMap per modelli di incorporamento e riclassificazione:
Importante:

Per il functions campo, è necessario verificare le funzioni supportate prima di modificare il ConfigMap. Per ulteriori dettagli, consultare la scheda tecnica ufficiale del modello.

È necessario impostare la variabile VLLM_USE_V1 di ambiente su 0 nel file Config Map. Altrimenti le richieste di inferenza falliranno.

apiVersion: v1
data:
  model: |
    jina_reranker_v2_base_multilingual:
      pvc_name: jina-reranker-v2-base-multilingual-pvc
      pvc_size: 62Gi
      isvc_yaml_name: isvc.yaml.j2
      embedding_model: "true"
      dir_name: .
      force_apply: no
      serving_runtime: vllm-serving-runtime
      storage_uri: pvc://jina-reranker-v2-base-multilingual-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_NEW_TOKENS
          value: "2048"
        - name: HF_MODULES_CACHE
          value: /tmp/huggingface/modules
        - name: SERVED_MODEL_NAME
          value: jinaai/jina-reranker-v2-base-multilingual
        - name: NUM_GPUS
          value: "1"
        - name: PORT
          value: "3000"
        - name: VLLM_CACHE_ROOT
          value: /home/vllm
        - name: VLLM_USE_V1
          value: "0"
      volumeMounts:
        - name: home
          mountPath: /home/vllm
        - name: tmp
          mountPath: /tmp
        - name: shm
          mountPath: /dev/shm
      volumes:
        - name: home
          emptyDir: {}
        - name: tmp
          emptyDir: {}
        - name: shm
          emptyDir:
            medium: Memory
            sizeLimit: 4Gi
      annotations:
        cloudpakId: 5e4c7dd451f14946bc298e18851f3746
        cloudpakName: IBM watsonx.ai
        productChargedContainers: All
        productCloudpakRatio: "1:1"
        productID: 3a6d4448ec8342279494bc22e36bc318
        productMetric: VIRTUAL_PROCESSOR_CORE
        productName: IBM Watsonx.ai
        productVersion: 12.0.0
        cloudpakInstanceId: cd346dc7-29fd-46db-a874-7e33cb8cf1ac
        model-id: jinaai/jina-reranker-v2-base-multilingual
      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: jina-reranker-v2-base-multilingual
        app: text-jina-reranker-v2-base-multilingual
        component: fmaas-inference-server
        bam-placement: colocate
        syom_model: jina--reranker-v2-base-multilingual
      command:
        - "/bin/sh"
      args:
        - "-c"
        - "vllm serve /mnt/models --served-model-name jinaai/jina-reranker-v2-base-multilingual --port 3000 --trust-remote-code"
      wx_inference_proxy:
        jinaai/jina-reranker-v2-base-multilingual:
          global_custom_foundation_model: true
          enabled:
          - "true"
          label: "jina-reranker-v2-base-multilingual"
          provider: "jinaai"
          source: "Hugging Face"
          tags:
          - vllm_runtime
          functions:
          - rerank
          short_description: "A multilingual transformer-based reranker that scores query-document relevance with high accuracy"
          long_description: "The Jina Reranker v2 is a cross-encoder model fine-tuned for multilingual text reranking, capable of handling up to 1024 tokens with a sliding window for longer texts. It delivers state-of-the-art performance across retrieval, code, and text-to-SQL reranking tasks."
          tier: "class_c1"
          number_params: 278m
          lifecycle:
            available:
              since_version: "10.1.0"
    jina_reranker_v2_base_multilingual_resources:
      limits:
        cpu: "2"
        memory: 128Gi
        nvidia.com/gpu: "1"
        ephemeral-storage: 1Gi
      requests:
        cpu: "1"
        memory: 4Gi
        nvidia.com/gpu: "1"
        ephemeral-storage: 10Mi
    jina_reranker_v2_base_multilingual_replicas: 1
kind: ConfigMap
metadata:
  finalizers:
  - watsonxaiifm.cpd.ibm.com/finalizer
  labels:
    syom: watsonxaiifm_extra_models_config
  name: jina-reranker-v2-base-multilingual
  namespace: cpd-instance

Scalabilità delle implementazioni globali

Per scalare la distribuzione globale, è necessario modificare il file ConfigMap della distribuzione:

  1. Apri il file ConfigMap nel tuo editor di testo predefinito:
    oc edit configmap <configmap name> -n <your namespace>
    Ad esempio:
    oc edit configmap meta-llama-3-1-8b-instruct -n cpd-instance
  2. Modifica il <model_name>_replicas valore. Ad esempio, cambia meta_llama_3_1_8b_instruct_replicas: 1 in meta_llama_3_1_8b_instruct_replicas: 2
  3. Riconciliazione trigger:
    oc patch watsonxaiifm watsonxaiifm-cr -n <your namespace> --type merge -p '{"spec":{"syom_update_at":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'"}}'

Cosa fare successivamente

Per testare un modello di base personalizzato distribuito globalmente da un progetto o da uno spazio di distribuzione, inviare una richiesta di inferenza al modello. Per ulteriori informazioni, consulta Implementazione di modelli di base personalizzati.