Capítulo 2: Diferenças em relação ao MLOps Tradicional
Comparação entre MLOps e LLMOps
| Aspecto | MLOps Tradicional | LLMOps |
|---|---|---|
| Tamanho do Modelo | MB a GB | GB a TB |
| Treinamento | Re-treinamento frequente | Fine-tuning ou prompting |
| Entrada | Features estruturadas | Linguagem natural |
| Saída | Scores/classes | Texto gerado |
| Avaliação | Métricas (AUC, F1) | Qualidade, segurança, relevância |
| Latência | ms | segundos |
| Fator de Custo | Computação | Tokens |
Desafios Exclusivos do LLMOps
1. Engenharia de Prompt
O ML tradicional não possui "prompts" – LLMs exigem um design cuidadoso de prompts:
# Simple prompt
prompt_v1 = "Summarize this document: {document}"
# Improved prompt with constraints
prompt_v2 = """You are a professional summarizer.
Summarize the following document in 3 bullet points.
Keep each point under 20 words.
Focus on key facts and figures.
Document: {document}
Summary:"""
2. Saídas Não Determinísticas
# Same input, different outputs
for i in range(3):
response = llm.generate("Write a haiku about Python")
print(f"Attempt {i+1}: {response}")
# Output varies each time!
3. Precificação Baseada em Tokens
def calculate_cost(input_tokens: int, output_tokens: int, model: str):
pricing = {
"gpt-4": {"input": 0.03, "output": 0.06},
"gpt-3.5-turbo": {"input": 0.0005, "output": 0.0015},
"claude-3-opus": {"input": 0.015, "output": 0.075},
}
input_cost = (input_tokens / 1000) * pricing[model]["input"]
output_cost = (output_tokens / 1000) * pricing[model]["output"]
return input_cost + output_cost