Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Belangrijk
- Foundry Local is beschikbaar in preview. Openbare preview-versies bieden vroege toegang tot functies die actief zijn geïmplementeerd.
 - Functies, benaderingen en processen kunnen worden gewijzigd of beperkte mogelijkheden hebben, voordat algemene beschikbaarheid (GA) wordt uitgevoerd.
 
Foundry Local voert ONNX-modellen uit op uw apparaat met hoge prestaties. Hoewel de modelcatalogus vooraf gecompileerde opties biedt, werkt elk model in ONNX-indeling.
Gebruik Olive om modellen in Safetensor- of PyTorch-indeling te compileren naar ONNX. Olive optimaliseert modellen voor ONNX, waardoor ze geschikt zijn voor implementatie in Foundry Local. Het maakt gebruik van technieken zoals kwantisatie en grafiekoptimalisatie om de prestaties te verbeteren.
In deze handleiding ziet u hoe u het volgende kunt doen:
- Converteer en optimaliseer modellen van Hugging Face om te worden uitgevoerd in Foundry Local. In de voorbeelden wordt het 
Llama-3.2-1B-Instructmodel gebruikt, maar elk generatief AI-model van Hugging Face werkt. - Voer uw geoptimaliseerde modellen uit met Foundry Local.
 
Vereiste voorwaarden
- Python 3.10 of hoger
 
Olive installeren
Olive optimaliseert modellen en converteert ze naar de ONNX-indeling.
pip install olive-ai[auto-opt]
Aanmelden bij Hugging Face
Voor het Llama-3.2-1B-Instruct model is Hugging Face-verificatie vereist.
huggingface-cli login
Opmerking
Maak een Hugging Face-token en vraag modeltoegang aan voordat u doorgaat.
Het model compileren
Stap 1: Voer de opdracht Olive auto-opt uit
Gebruik de opdracht Olive auto-opt om het model te downloaden, converteren, kwantiseren en optimaliseren:
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
Opmerking
Het compilatieproces duurt ongeveer 60 seconden, plus de downloadtijd.
De opdracht gebruikt de volgende parameters:
| Kenmerk | Beschrijving | 
|---|---|
model_name_or_path | 
Modelbron: Face ID, lokaal pad of Register-id van Azure AI-model knuffelen | 
output_path | 
Waar het geoptimaliseerde model moet worden opgeslagen | 
device | 
Doelhardware: cpu, gpuof npu | 
provider | 
Uitvoeringsprovider (bijvoorbeeld , CPUExecutionProviderCUDAExecutionProvider) | 
precision | 
Modelprecisie: fp16, fp32, int4 of int8 | 
use_ort_genai | 
Configuratiebestanden voor inferentie maken | 
Aanbeveling
Als je een lokale kopie van het model hebt, kun je een lokaal pad gebruiken in plaats van de Hugging Face ID. Bijvoorbeeld: --model_name_or_path models/llama-3.2-1B-Instruct. Olive verwerkt de conversie, optimalisatie en kwantisatie automatisch.
Stap 2: De naam van het uitvoermodel wijzigen
Olive maakt een algemene directory model. Wijzig de naam voor eenvoudiger hergebruik:
cd models/llama
mv model llama-3.2
Stap 3: Een chatsjabloonbestand maken
Een chatsjabloon is een gestructureerde indeling waarmee wordt gedefinieerd hoe invoer- en uitvoerberichten worden verwerkt voor een AI-model voor gesprekken. Hiermee worden de rollen (bijvoorbeeld systeem, gebruiker, assistent) en de structuur van het gesprek opgegeven, zodat het model de context begrijpt en de juiste antwoorden genereert.
Foundry Local vereist een JSON-bestand met een chatsjabloon met de naam inference_model.json om antwoorden te genereren. De sjabloon bevat de modelnaam en een PromptTemplate object. Het object bevat een {Content} tijdelijke aanduiding die Foundry Local tijdens runtime injecteert met de gebruikersprompt.
{
  "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"
  }
}
Maak het chatsjabloonbestand met de apply_chat_template methode uit de bibliotheek Hugging Face:
Opmerking
In dit voorbeeld wordt de bibliotheek Hugging Face (een afhankelijkheid van Olive) gebruikt om een chatsjabloon te maken. Als u dezelfde virtuele Python-omgeving gebruikt, hoeft u deze niet te installeren. Installeer deze in een andere omgeving met 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)
Voer het script uit met behulp van:
python generate_inference_model.py
Het model uitvoeren
Voer uw gecompileerde model uit met de Foundry Local CLI, REST API of OpenAI Python SDK. Wijzig eerst de map van de modelcache in de modellenmap die u in de vorige stap hebt gemaakt:
foundry cache cd models
foundry cache ls  # should show llama-3.2
Waarschuwing
Verander de modelcache terug naar de standaardmap nadat u klaar bent.
foundry cache cd ./foundry/cache/models
De lokale CLI van Foundry gebruiken
foundry model run llama-3.2 --verbose
De OpenAI Python SDK gebruiken
Gebruik de OpenAI Python SDK om te communiceren met de Foundry Local REST API. Installeer het met:
pip install openai
pip install foundry-local-sdk
Voer vervolgens het model uit met de volgende code:
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)
Aanbeveling
Gebruik elke taal die HTTP-aanvragen ondersteunt. Zie Geïntegreerde deductie-SDK's met Foundry Local voor meer informatie.
De modelcache opnieuw instellen
Nadat u het aangepaste model hebt gebruikt, stelt u de modelcache opnieuw in op de standaardmap:
foundry cache cd ./foundry/cache/models