¿Qué es Llama 3?
Llama 3 es un modelo de lenguaje de gran escala de código abierto desarrollado y publicado por Meta (anteriormente Facebook). Se publica bajo una licencia que permite uso comercial, y es posible ejecutarlo en entorno local y hacer fine-tuning.
Variaciones del modelo
| Modelo | Parámetros | Uso |
|---|---|---|
| Llama 3 8B | 8 mil millones | Ligero, para ejecución local |
| Llama 3 70B | 70 mil millones | Alto rendimiento, para servidores |
| Llama 3 8B Instruct | 8 mil millones | Ajustado para diálogo e instrucciones |
| Llama 3 70B Instruct | 70 mil millones | Ajustado para diálogo e instrucciones |
Benchmark
MMLU (Conocimiento):
- GPT-4: 86.4%
- Llama 3 70B: 82.0%
- Llama 3 8B: 68.4%
HumanEval (Codificación):
- GPT-4: 67.0%
- Llama 3 70B: 62.5%
- Llama 3 8B: 45.8%
Ejecución local
Ollama
# Instalar Ollama
curl -fsSL https://ollama.ai/install.sh | sh
# Ejecutar Llama 3 8B
ollama run llama3:8b
# Modo de diálogo
>>> What is the capital of France?
The capital of France is Paris.
Python (transformers)
from transformers import AutoTokenizer, AutoModelForCausalLM
model_id = "meta-llama/Meta-Llama-3-8B-Instruct"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.bfloat16,
device_map="auto"
)
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Explain quantum computing simply."}
]
input_ids = tokenizer.apply_chat_template(
messages,
add_generation_prompt=True,
return_tensors="pt"
).to(model.device)
outputs = model.generate(
input_ids,
max_new_tokens=256,
do_sample=True,
temperature=0.7
)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(response)
llama.cpp (Implementación C++)
# Compilar llama.cpp
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make
# Descargar modelo GGUF
# Obtener versión quantizada de Hugging Face
# Ejecutar
./main -m models/llama-3-8b-instruct.Q4_K_M.gguf \
-p "What is machine learning?" \
-n 256
Uso como servicio API
vLLM
from vllm import LLM, SamplingParams
llm = LLM(model="meta-llama/Meta-Llama-3-8B-Instruct")
sampling_params = SamplingParams(temperature=0.7, max_tokens=256)
prompts = [
"Explain the theory of relativity",
"Write a Python function to sort a list"
]
outputs = llm.generate(prompts, sampling_params)
for output in outputs:
print(output.outputs[0].text)
API compatible con OpenAI (Ollama)
# Iniciar servidor
ollama serve
# Endpoint compatible con OpenAI
curl http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "llama3:8b",
"messages": [{"role": "user", "content": "Hello!"}]
}'
// Uso desde JavaScript/TypeScript
import OpenAI from 'openai';
const openai = new OpenAI({
baseURL: 'http://localhost:11434/v1',
apiKey: 'ollama' // Ollama no requiere autenticación
});
const response = await openai.chat.completions.create({
model: 'llama3:8b',
messages: [{ role: 'user', content: 'Hello!' }]
});
Fine-tuning
Usando LoRA
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import LoraConfig, get_peft_model
model = AutoModelForCausalLM.from_pretrained(
"meta-llama/Meta-Llama-3-8B",
torch_dtype=torch.bfloat16
)
lora_config = LoraConfig(
r=16,
lora_alpha=32,
target_modules=["q_proj", "v_proj"],
lora_dropout=0.05
)
model = get_peft_model(model, lora_config)
# Ejecutar entrenamiento...
Casos de uso
Aplicaciones RAG
from langchain_community.llms import Ollama
from langchain_community.vectorstores import Chroma
from langchain.chains import RetrievalQA
llm = Ollama(model="llama3:8b")
vectorstore = Chroma(...)
qa_chain = RetrievalQA.from_chain_type(
llm=llm,
chain_type="stuff",
retriever=vectorstore.as_retriever()
)
result = qa_chain.invoke("What is our return policy?")
Generación de código
prompt = """
Write a Python function that:
1. Takes a list of numbers
2. Filters out negative numbers
3. Returns the sum of remaining numbers
Include docstring and type hints.
"""
response = llm.generate(prompt)
Requisitos de hardware
| Modelo | VRAM | RAM |
|---|---|---|
| 8B (FP16) | 16GB | 32GB |
| 8B (Q4) | 6GB | 16GB |
| 70B (FP16) | 140GB | 256GB |
| 70B (Q4) | 40GB | 64GB |
Resumen
Llama 3 es un poderoso modelo de lenguaje de gran escala de código abierto con uso comercial permitido. Permite uso flexible incluyendo ejecución local, fine-tuning y conversión a servicio API. Es ideal para aplicaciones que priorizan la privacidad o casos de uso que requieren personalización.
← Volver a la lista