Pour déployer un foundation model personnalisé pour l'inférence avec watsonx.ai, vous devez télécharger le modèle vers un stockage d'objets dans le nuage. Vous pouvez utiliser le godet dans IBM Cloud Object Storage qui est associé à votre espace de déploiement ou à un stockage cloud externe.
Téléchargement de modèles à partir de dépôts publics
Vous pouvez utiliser les dépôts de modèles publics pour télécharger les modèles de fondation. Les dépôts de modèles publics peuvent exiger que vous créiez un compte avant de télécharger des modèles.
Par exemple, vous pouvez utiliser Hugging Face, un référentiel de modèles public, pour télécharger des modèles de fondation personnalisés pour votre cas d'utilisation. Vous devez créer un compteHugging Face pour télécharger le modèle à partir de Hugging Face
Téléchargement d'un modèle
Ces étapes montrent comment télécharger un foundation model personnalisé en utilisant le modèle Hugging Face Suivez ces étapes pour télécharger un foundation model personnalisé à l'aide de l'interface de ligne de commande Hugging Face
Installez le paquet
huggingface-cli
avecpip
:pip install -U "huggingface_hub[cli]"
Vérifiez que le huggingface-cli est correctement configuré :
huggingface-cli --help
Configurez les variables d'environnement nécessaires :
export HF_TOKEN="<your Hugging Face token>" export MODEL_NAME="<name of the model>" export MODEL_DIR="<directory to download the model to>"
Créez un répertoire sur votre disque local pour y télécharger le modèle :
mkdir ${MODEL_DIR}
Connectez-vous à l'interface de ligne de commande Hugging Face et téléchargez le modèle :
huggingface-cli login --token ${HF_TOKEN} huggingface-cli download ${MODEL_NAME} --local-dir ${MODEL_DIR} --cache-dir ${MODEL_DIR}
Conversion d'un modèle au format requis
Avant d'ajouter un modèle au stockage d'objets, vous devez vous assurer que votre modèle est compatible avec la norme TGI (Text Generation Inference) et qu'il est construit avec une architecture de modèle et un type de modèle pris en charge. Pour plus d'informations, voir Planification du déploiement d'un foundation model personnalisé.
Si votre modèle a été affiné avec InstructLab, la conversion au format safetensors
peut ne pas être possible :
- Les modèles qui ont été affinés dans un environnement Linux doivent être convertis.
- Les modèles mis au point sur Mac ne peuvent pas être convertis.
- Les modèles qui ont été affinés et enregistrés au format
.gguf
(dans n'importe quel environnement) ne peuvent pas être convertis.
Pour convertir un modèle qui a été affiné avec InstructLab, utilisez le code dans Ce référentiel pour convertir votre modèle.
Pour tous les autres modèles, si votre modèle n'est pas au format safetensors
et ne contient pas le fichier tokenizer.json
, suivez les étapes suivantes pour convertir votre modèle au format requis. Sinon, passez à la section Configuration du stockage d'objets dans le nuage et ajout du modèle.
Installez
podman
Desktop sur votre machine locale.Tirer l'image TGIS :
export TGIS_IMAGE="quay.io/modh/text-generation-inference:rhoai-2.8-58cac74" podman pull ${TGIS_IMAGE}
Convertir le modèle :
container_id=$(podman run -itd --privileged -u 0 -v ${MODEL_DIR}:/tmp ${TGIS_IMAGE} tail -f /dev/null) podman exec -it ${container_id} bash -c 'export MODEL_PATH=/tmp ; text-generation-server convert-to-safetensors ${MODEL_PATH} ; text-generation-server convert-to-fast-tokenizer ${MODEL_PATH}'
Téléchargement du modèle vers le stockage d'objets dans le nuage
Vous pouvez télécharger votre modèle vers un godet dans IBM Cloud Object Storage ou tout autre godet de stockage, tel que Amazon Simple Storage ServiceAmazon S3. Voici quelques-uns des systèmes de stockage d'objets dans le nuage proposés par IBM
Téléchargement du modèle vers IBM Cloud Object Storage en utilisant IBM Aspera Transfer SDK
Prérequis :
- Téléchargez le IBM Aspera Transfer SDK. Cliquez sur ce lien.
- Définissez ces variables d'environnement :
- Chemin d'accès à IBM Aspera Transfer SDK en tant que
path-to-aspera
- Chemin d'accès au dossier contenant le modèle en tant que
path-to-model-folder
- Nom de l'entrepôt dans lequel le modèle doit être transféré en tant que
bucket-name
- Votre clé API de stockage d'objets dans le nuage comme
api-key
- L'identifiant de l'instance de votre service de stockage d'objets dans le nuage est
cos-service-instance-id
- Le point de terminaison de votre service de stockage d'objets dans le nuage est
cos-service-endpoint
- Chemin d'accès à IBM Aspera Transfer SDK en tant que
Utilisez ce script pour télécharger votre modèle vers IBM Cloud Object Storage en utilisant IBM Aspera Transfer SDK :
import grpc
import sys
import time, subprocess
import json
import os.path
import os.environ
import transfer_pb2 as transfer_manager
import transfer_pb2_grpc as transfer_manager_grpc
path_to_aspera = os.environ['path-to-aspera']
sys.path.append(f'{path_to_aspera}/connectors/python')
def start_aspera_daemon():
config_path = f'/{path_to_aspera}/config/asperatransferd.json'
daemon_path = f'/{path_to_aspera}/bin/asperatransferd'
# Start the daemon
process = subprocess.Popen([daemon_path, '--config', config_path])
print(f"Started Aspera Transfer SDK daemon with PID {process.pid}")
time.sleep(5) # Increased wait time for the daemon to start properly
return process
def run():
try:
# create a connection to the transfer manager daemon
client = transfer_manager_grpc.TransferServiceStub(grpc.insecure_channel('localhost:55002'))
# create transfer spec
transfer_spec = {
"session_initiation":{
"icos":{
"bucket": os.environ['bucket-name'],
"api_key": os.environ['cos-api-key'],
"ibm_service_instance_id": os.environ['cos-service-instance-id'],
"ibm_service_endpoint": os.environ['cos-service-endpoint'] # example: https://s3.us-south.cloud-object-storage.appdomain.cloud
}
},
"direction": "send",
"title": "COS Upload",
"assets": {
"destination_root": "/model",
"paths": [
{
"source": os.environ['path-to-model-folder']
}
]
}
}
transfer_spec = json.dumps(transfer_spec)
# create a transfer request
transfer_request = transfer_manager.TransferRequest(
transferType=transfer_manager.FILE_REGULAR,
config=transfer_manager.TransferConfig(),
transferSpec=transfer_spec
)
# send start transfer request to transfer manager daemon
try:
transfer_response = client.StartTransfer(transfer_request)
transfer_id = transfer_response.transferId
print(f"Transfer started with id {transfer_id}")
except grpc.RpcError as e:
print(f"Error starting transfer: {e.code()}: {e.details()}")
return
# monitor transfer status
try:
# Monitor transfer status
while True:
response = client.MonitorTransfers(
transfer_manager.RegistrationRequest(
filters=[transfer_manager.RegistrationFilter(
transferId=[transfer_id]
)]))
for transfer_info in response:
print(f"Transfer info: {transfer_info}")
# Check transfer status in response
status = transfer_info.status
if status == transfer_manager.FAILED or status == transfer_manager.COMPLETED:
print(f"Transfer finished with status {status}")
return
# Wait before polling again
time.sleep(5)
except grpc.RpcError as e:
print(f"Error monitoring transfer: {e.code()}: {e.details()}")
except Exception as e:
print(f"Unexpected error: {str(e)}", file=sys.stderr)
if __name__ == '__main__':
# Start the Aspera Transfer SDK daemon
daemon_process = start_aspera_daemon()
# Run the file transfer
run()
# Optionally, stop the Aspera daemon after transfer
daemon_process.terminate()
print("Aspera Transfer SDK daemon stopped")
Téléchargement du modèle vers IBM Cloud Object Storage à l'aide d'outils fournis par des tiers
Vous pouvez utiliser un logiciel tiers pour télécharger votre modèle vers IBM Cloud Object Storage.
Suivez les étapes suivantes pour télécharger votre modèle vers IBM Cloud Object Storage à l'aide de l'interface de ligne de commande Amazon Web Services :
Installez l'interface de ligne de commande Amazon Web Services avec
pip
:pip install awscli
Définir les variables d'environnement nécessaires :
export AWS_ACCESS_KEY_ID="<your access key>" export AWS_SECRET_ACCESS_KEY="<your secret access key>" export ENDPOINT="<s3 endpoint URL>" export BUCKET_NAME="<name of the bucket to upload the model>" MODEL_FOLDER=${MODEL_NAME//\//-} # The name of the created folder is based on model name. export MODEL_FOLDER=${MODEL_FOLDER//./-} # Just in case, we're removing slashes and dots from it.
Ajoutez le modèle au seau IBM Cloud Object Storage en utilisant l'interface de ligne de commande Amazon Web Services :
aws --endpoint-url ${ENDPOINT} s3 cp ${MODEL_DIR} s3://${BUCKET_NAME}/${MODEL_FOLDER}/ --recursive --follow-symlinks
Étape suivante
Création d'une ressource modèle
Sujet parent : Planifier le déploiement d'un foundation model personnalisé