Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Importante
- Foundry Local está disponible en versión preliminar. Las versiones preliminares públicas proporcionan acceso anticipado a las características que se encuentran en la implementación activa.
- Las características, los enfoques y los procesos pueden cambiar o tener funcionalidades limitadas, antes de la disponibilidad general (GA).
Foundry Local ejecuta modelos ONNX en el dispositivo con un alto rendimiento. Aunque el catálogo de modelos ofrece opciones precompiladas de forma predeterminada, cualquier modelo en el formato ONNX funciona.
Use Olive para compilar modelos en formato Safetensor o PyTorch en ONNX. Olive optimiza los modelos para ONNX, por lo que son adecuados para su implementación en Foundry Local. Usa técnicas como la cuantificación y la optimización de grafos para mejorar el rendimiento.
En esta guía se muestra cómo:
- Convierta y optimice los modelos de Hugging Face para que se ejecuten en Foundry Local. Los ejemplos usan el
Llama-3.2-1B-Instructmodelo, pero cualquier modelo de IA generativa de Hugging Face funciona. - Ejecute los modelos optimizados con Foundry Local.
Prerrequisitos
- Python 3.10 o posterior
Instalación de Olive
Olive optimiza los modelos y los convierte en el formato ONNX.
pip install olive-ai[auto-opt]
Iniciar sesión en Hugging Face
El Llama-3.2-1B-Instruct modelo requiere la autenticación de Hugging Face.
huggingface-cli login
Nota:
Cree un token de Hugging Face y solicite acceso al modelo antes de continuar.
Compilación del modelo
Paso 1: Ejecutar el comando auto-opt de Oliva
Use el comando Olive auto-opt para descargar, convertir, cuantificar y optimizar el modelo:
olive auto-opt \
--model_name_or_path meta-llama/Llama-3.2-1B-Instruct \
--trust_remote_code \
--output_path models/llama \
--device cpu \
--provider CPUExecutionProvider \
--use_ort_genai \
--precision int4 \
--log_level 1
Nota:
El proceso de compilación tarda aproximadamente 60 segundos, más el tiempo de descarga.
El comando usa los parámetros siguientes:
| Parámetro | Descripción |
|---|---|
model_name_or_path |
Origen del modelo: Hugging Face ID, local path o Azure AI Model Registry ID |
output_path |
Dónde guardar el modelo optimizado |
device |
Hardware de destino: cpu, gpuo npu |
provider |
Proveedor de ejecución (por ejemplo, CPUExecutionProvider, CUDAExecutionProvider) |
precision |
Precisión del modelo: fp16, fp32, int4o int8 |
use_ort_genai |
Crea archivos de configuración de inferencia |
Sugerencia
Si tiene una copia local del modelo, puede usar una ruta local en lugar del Hugging Face ID. Por ejemplo: --model_name_or_path models/llama-3.2-1B-Instruct. Olive controla automáticamente la conversión, optimización y cuantificación.
Paso 2: Cambiar el nombre del modelo de salida
Olive crea un directorio genérico model . Cambie su nombre para facilitar la reutilización:
cd models/llama
mv model llama-3.2
Paso 3: Crear un archivo de plantilla de chat
Una plantilla de chat es un formato estructurado que define cómo se procesan los mensajes de entrada y salida para un modelo de IA conversacional. Especifica los roles (por ejemplo, el sistema, el usuario, el asistente) y la estructura de la conversación, lo que garantiza que el modelo comprenda el contexto y genere las respuestas adecuadas.
Foundry Local requiere un archivo JSON de plantilla de chat denominado inference_model.json para generar respuestas. La plantilla incluye el nombre del modelo y un PromptTemplate objeto . El objeto contiene un marcador de posición {Content} que Fundición local inserta en tiempo de ejecución con la indicación del usuario.
{
"Name": "llama-3.2",
"PromptTemplate": {
"assistant": "{Content}",
"prompt": "<|begin_of_text|><|start_header_id|>system<|end_header_id|>\n\nCutting Knowledge Date: December 2023\nToday Date: 26 Jul 2024\n\nYou are a helpful assistant.<|eot_id|><|start_header_id|>user<|end_header_id|>\n\n{Content}<|eot_id|><|start_header_id|>assistant<|end_header_id|>\n\n"
}
}
Cree el archivo de plantilla de chat con el apply_chat_template método de la biblioteca Hugging Face:
Nota:
En este ejemplo se usa la biblioteca Hugging Face (una dependencia de Olive) para crear una plantilla de chat. Si usa el mismo entorno virtual de Python, no es necesario instalarlo. En otro entorno, instálelo con pip install transformers.
# generate_inference_model.py
# This script generates the inference_model.json file for the Llama-3.2 model.
import json
import os
from transformers import AutoTokenizer
model_path = "models/llama/llama-3.2"
tokenizer = AutoTokenizer.from_pretrained(model_path)
chat = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "{Content}"},
]
template = tokenizer.apply_chat_template(chat, tokenize=False, add_generation_prompt=True)
json_template = {
"Name": "llama-3.2",
"PromptTemplate": {
"assistant": "{Content}",
"prompt": template
}
}
json_file = os.path.join(model_path, "inference_model.json")
with open(json_file, "w") as f:
json.dump(json_template, f, indent=2)
Ejecute el script mediante:
python generate_inference_model.py
Ejecución del modelo
Ejecute el modelo compilado con la CLI local de Foundry, la API REST o el SDK de Python de OpenAI. En primer lugar, cambie el directorio de caché del modelo al directorio models que creó en el paso anterior:
foundry cache cd models
foundry cache ls # should show llama-3.2
Precaución
Vuelva a cambiar la memoria caché del modelo al directorio predeterminado cuando haya terminado:
foundry cache cd ./foundry/cache/models
Uso de la CLI local de Foundry
foundry model run llama-3.2 --verbose
Uso del SDK de Python de OpenAI
Use el SDK de Python de OpenAI para interactuar con la API de REST local de Foundry. Instálelo con:
pip install openai
pip install foundry-local-sdk
A continuación, ejecute el modelo con el código siguiente:
import openai
from foundry_local import FoundryLocalManager
modelId = "llama-3.2"
# Create a FoundryLocalManager instance. This starts the Foundry Local service if it's not already running and loads the specified model.
manager = FoundryLocalManager(modelId)
# The remaining code uses the OpenAI Python SDK to interact with the local model.
# Configure the client to use the local Foundry service
client = openai.OpenAI(
base_url=manager.endpoint,
api_key=manager.api_key # API key is not required for local usage
)
# Set the model to use and generate a streaming response
stream = client.chat.completions.create(
model=manager.get_model_info(modelId).id,
messages=[{"role": "user", "content": "What is the golden ratio?"}],
stream=True
)
# Print the streaming response
for chunk in stream:
if chunk.choices[0].delta.content is not None:
print(chunk.choices[0].delta.content, end="", flush=True)
Sugerencia
Use cualquier lenguaje que admita solicitudes HTTP. Para obtener más información, consulte SDK de inferencia integrados con Foundry Local.
Restablecimiento de la caché del modelo
Después de terminar de usar el modelo personalizado, restablezca la memoria caché del modelo en el directorio predeterminado:
foundry cache cd ./foundry/cache/models