Sommario
La combinazione di Small Language Models (SLM) e ONNX rappresenta un cambiamento significativo nell’interoperabilità dell’Intelligenza Artificiale. Come sfruttare la potenza dei modelli Phi-3 all’interno delle applicazioni .NET con C# e ONNX?
Introduzione al “Modello di Piccolo Linguaggio” Phi-3
Il “modello di Piccolo Linguaggio” Phi-3 (SLM) è un’avanzata rivoluzionaria nell’IA, sviluppata da Microsoft. Fa parte della famiglia Phi-3, che include i modelli SLM più capaci e convenienti disponibili oggi. Questi modelli superano altri di dimensioni simili o anche maggiori in vari benchmark, tra cui linguaggio, ragionamento, codifica e compiti matematici. I modelli Phi-3, tra cui Phi-3-mini, Phi-3-small e Phi-3-medium, sono progettati per essere ottimizzati per ONNX Runtime, garantendo una vasta compatibilità e alte prestazioni.
Introduzione a ONNX
ONNX, o Open Neural Network Exchange, è un formato open-source che permette ai modelli di IA di essere portatili e interoperabili tra diversi framework e hardware. Consente agli sviluppatori di utilizzare lo stesso modello con vari strumenti, runtime e compilatori, rendendolo una pietra miliare per lo sviluppo dell’IA. ONNX supporta una vasta gamma di operatori e offre estensibilità, cruciale per le esigenze in evoluzione dell’IA.
Perché Usare ONNX nello Sviluppo Locale di IA
Lo sviluppo locale di IA beneficia notevolmente da ONNX grazie alla sua capacità di semplificare la distribuzione dei modelli e migliorare le prestazioni. ONNX fornisce un formato comune per i modelli di apprendimento automatico, facilitando lo scambio tra diversi framework e ottimizzando per vari ambienti hardware. Per gli sviluppatori C#, esiste un set di librerie specificamente creato per lavorare con i modelli ONNX, come Microsoft.ML.OnnxRuntime.
Applicazione Console di Esempio per Utilizzare un Modello ONNX
I passaggi principali per utilizzare un modello con ONNX in un’applicazione C# sono:
- Il modello Phi-3, memorizzato nel
modelPath
, viene caricato in un oggetto Model. - Questo modello viene utilizzato per creare un
Tokenizer
responsabile della conversione degli input testuali in un formato comprensibile dal modello.
Ad esempio, questa è un’implementazione di chatbot da Program.cs:
csharpCopia codiceusing Microsoft.ML.OnnxRuntimeGenAI;
var modelPath = @"D:\phi3\models\Phi-3-mini-4k-instruct-onnx\cpu_and_mobile\cpu-int4-rtn-block-32";
var model = new Model(modelPath);
var tokenizer = new Tokenizer(model);
var systemPrompt = "You are an AI assistant that helps people find information. Answer questions using a direct style. Do not share more information than requested by the users.";
// chat start
Console.WriteLine(@"Ask your question. Type an empty string to Exit.");
// chat loop
while (true)
{
// Get user question
Console.WriteLine();
Console.Write(@"Q: ");
var userQ = Console.ReadLine();
if (string.IsNullOrEmpty(userQ))
{
break;
}
// show phi3 response
Console.Write("Phi3: ");
var fullPrompt = $"<|system|>{systemPrompt}<|end|><|user|>{userQ}<|end|><|assistant|>";
var tokens = tokenizer.Encode(fullPrompt);
var generatorParams = new GeneratorParams(model);
generatorParams.SetSearchOption("max_length", 2048);
generatorParams.SetSearchOption("past_present_share_buffer", false);
generatorParams.SetInputSequences(tokens);
var generator = new Generator(model, generatorParams);
while (!generator.IsDone())
{
generator.ComputeLogits();
generator.GenerateNextToken();
var outputTokens = generator.GetSequence(0);
var newToken = outputTokens.Slice(outputTokens.Length - 1, 1);
var output = tokenizer.Decode(newToken);
Console.Write(output);
}
Console.WriteLine();
}
C# ONNX e Phi-3 Vision
Il repository Phi-3 Cookbook mostra come utilizzare questi potenti modelli per attività come question-answering e analisi delle immagini in un ambiente .NET. Include laboratori e progetti di esempio che dimostrano l’uso dei modelli Phi-3 mini e Phi-3 Vision nelle applicazioni .NET.
Riassunto
L’integrazione dei modelli Phi-3 con ONNX in applicazioni C# offre enormi vantaggi per lo sviluppo dell’IA locale, migliorando la portabilità e le prestazioni dei modelli. Se vuoi saperne di più, esplora i campioni di Vision che dimostrano le capacità dell’IA nel computing visivo utilizzando SLM, ONNX e C#.