Text Generation Inference

Text Generation Inference (TGI) est une boîte à outils pour déployer et servir des modèles de langage de grande taille (LLM). TGI permet une génération de texte haute performance pour les LLM open source les plus populaires. Parmi ses fonctionnalités, on trouve la quantification, le parallélisme tensoriel, le streaming de tokens, le batching continu, la flash attention, le guidage, et bien plus encore. La façon la plus simple de démarrer avec TGI est d'utiliser le conteneur Docker officiel.

Déploiement

Déploiement

model=mistralai/Mistral-7B-Instruct-v0.3
volume=$PWD/data # share a volume with the Docker container to avoid downloading weights every run
docker run --gpus all --shm-size 1g -p 8080:80 -v $volume:/data  \
    -e HUGGING_FACE_HUB_TOKEN=$HUGGING_FACE_HUB_TOKEN \
    ghcr.io/huggingface/text-generation-inference:2.0.3 \
    --model-id $model

Cela démarrera une instance TGI exposant une API de type OpenAI, comme documenté dans la section API. Assurez-vous de définir la variable d'environnement HUGGING_FACE_HUB_TOKEN avec votre jeton d'accès utilisateur Hugging Face. Pour utiliser les modèles Mistral, vous devez d'abord visiter la page du modèle correspondant et remplir le petit formulaire. Vous obtenez ensuite automatiquement l'accès au modèle. Si le modèle ne tient pas dans votre GPU, vous pouvez également utiliser des méthodes de quantification (AWQ, GPTQ, etc.). Vous trouverez toutes les options de lancement TGI dans leur documentation.

Utilisation de l'API

Utilisation de l'API

Avec l'endpoint compatible Chat

Avec l'endpoint compatible Chat

TGI prend en charge l'API Messages, qui est compatible avec l'API Mistral et OpenAI Chat Completion.

from mistralai.client import MistralClient
from mistralai.models.chat_completion import ChatMessage

# Initialize the client but point it to TGI
client = MistralClient(api_key="-", endpoint="http://127.0.0.1:8080")
chat_response = client.chat(
    model="-",
    messages=[
      ChatMessage(role="user", content="What is the best French cheese?")
    ]
)
print(chat_response.choices[0].message.content)
Utilisation de l'endpoint Generate

Utilisation de l'endpoint Generate

Si vous souhaitez plus de contrôle sur ce que vous envoyez au serveur, vous pouvez utiliser l'endpoint generate. Dans ce cas, vous êtes responsable du formatage du prompt avec le bon template et les bons stop tokens.

# Make sure to install the huggingface_hub package before
from huggingface_hub import InferenceClient

client = InferenceClient(model="http://127.0.0.1:8080")
client.text_generation(prompt="What is Deep Learning?")