Passer au contenu principal
Ces exemples montrent comment utiliser Serverless Inference avec Weave pour le traçage, l’évaluation et la comparaison. Parcourez-les pour apprendre à instrumenter les appels de modèle afin d’en observer le comportement, de mesurer les performances sur un jeu de données et de comparer les modèles côte à côte. Les sections suivantes présentent un exemple de traçage de base et un flux de travail d’évaluation plus avancé. Avant d’exécuter l’un ou l’autre exemple, complétez les prérequis.

Exemple de base : traçage de Llama 3.1 8B avec Weave

Cet exemple montre comment envoyer un prompt au modèle Llama 3.1 8B et tracer l’appel avec Weave. Le traçage capture l’intégralité des entrées et des sorties de l’appel LLM, surveille les performances et vous permet d’analyser les résultats dans la Weave UI.
Pour en savoir plus, consultez traçage dans Weave.
Dans cet exemple :
  • Vous définissez une fonction décorée avec @weave.op() qui effectue une requête de Chat Completion.
  • Weave enregistre vos traces et les associe à votre entité et à votre projet W&B.
  • Weave trace automatiquement la fonction, avec journalisation des entrées, des sorties, de la latence et des métadonnées.
  • Le résultat s’affiche dans le terminal, et la trace apparaît dans votre onglet Traces sur https://wandb.ai.
import weave
import openai

# Définir l'équipe et le projet Weave pour le traçage
weave.init("[YOUR-TEAM]/[YOUR-PROJECT]")

client = openai.OpenAI(
    base_url='https://api.inference.wandb.ai/v1',

    # Créez une clé API sur https://wandb.ai/settings
    api_key="[YOUR-API-KEY]",

    # Facultatif : équipe et projet pour le suivi d'utilisation
    project="wandb/inference-demo",
)

# Tracer l'appel au modèle dans Weave
@weave.op()
def run_chat():
    response = client.chat.completions.create(
        model="meta-llama/Llama-3.1-8B-Instruct",
        messages=[
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": "Tell me a joke."}
        ],
    )
    return response.choices[0].message.content

# Exécuter et journaliser l'appel tracé
output = run_chat()
print(output)
Après avoir exécuté le code, affichez la trace dans Weave à l’aide de l’une des méthodes suivantes :
  • Cliquez sur le lien affiché dans le terminal. Par exemple, https://wandb.ai/[YOUR-TEAM]/[YOUR-PROJECT]/r/call/01977f8f-839d-7dda-b0c2-27292ef0e04g.
  • Accédez à https://wandb.ai et sélectionnez l’onglet Traces.
Une fois la trace de base en place, vous pouvez passer à un flux de travail plus complet, qui va au-delà de l’inspection des appels individuels.

Exemple avancé : utiliser Weave évaluations et les leaderboards

En plus du tracing des appels de modèle, vous pouvez évaluer les performances et publier des leaderboards. Cet exemple compare deux modèles sur un jeu de données de questions-réponses pour montrer comment Llama 3.1 8B et DeepSeek-V3 se comportent avec les mêmes prompts.
import os
import asyncio
import openai
import weave
from weave.flow import leaderboard
from weave.trace.ref_util import get_ref

# Définir l'équipe et le projet Weave pour le suivi
weave.init("[YOUR-TEAM]/[YOUR-PROJECT]")

dataset = [
    {"input": "What is 2 + 2?", "target": "4"},
    {"input": "Name a primary color.", "target": "red"},
]

@weave.op
def exact_match(target: str, output: str) -> float:
    return float(target.strip().lower() == output.strip().lower())

class WBInferenceModel(weave.Model):
    model: str

    @weave.op
    def predict(self, prompt: str) -> str:
        client = openai.OpenAI(
            base_url="https://api.inference.wandb.ai/v1",
            # Créez une clé API sur https://wandb.ai/settings
            api_key="[YOUR-API-KEY]",
            # Facultatif : équipe et projet pour le suivi de l'utilisation
            project="[YOUR-TEAM]/[YOUR-PROJECT]",
        )
        resp = client.chat.completions.create(
            model=self.model,
            messages=[{"role": "user", "content": prompt}],
        )
        return resp.choices[0].message.content

llama = WBInferenceModel(model="meta-llama/Llama-3.1-8B-Instruct")
deepseek = WBInferenceModel(model="deepseek-ai/DeepSeek-V3-0324")

def preprocess_model_input(example):
    return {"prompt": example["input"]}

evaluation = weave.Evaluation(
    name="QA",
    dataset=dataset,
    scorers=[exact_match],
    preprocess_model_input=preprocess_model_input,
)

async def run_eval():
    await evaluation.evaluate(llama)
    await evaluation.evaluate(deepseek)

asyncio.run(run_eval())

spec = leaderboard.Leaderboard(
    name="Inference Leaderboard",
    description="Compare models on a QA dataset",
    columns=[
        leaderboard.LeaderboardColumn(
            evaluation_object_ref=get_ref(evaluation).uri(),
            scorer_name="exact_match",
            summary_metric_path="mean",
        )
    ],
)

weave.publish(spec)
Après avoir exécuté ce code, accédez à votre compte W&B sur https://wandb.ai/ et effectuez les opérations suivantes :
Consulter les évaluations de votre modèle
Consulter votre classement
Après avoir terminé les deux exemples, vous disposez d’un ensemble d’appels de modèle tracés, d’une évaluation publiée et d’un leaderboard qui compare les modèles sur votre jeu de données.

Étapes suivantes

Pour continuer à explorer Serverless Inference, essayez ce qui suit :
  • Explorez la référence de l’API pour découvrir toutes les méthodes disponibles.
  • Essayez des modèles dans l’UI.