Führen Sie Llama, Phi, Gemma und Mistral mit ONNX Runtime aus.
Diese API bietet Ihnen eine einfache, flexible und leistungsstarke Möglichkeit, LLMs auf dem Gerät auszuführen.
Es implementiert die generative KI-Schleife für ONNX-Modelle, einschließlich Vor- und Nachverarbeitung, Inferenz mit ONNX Runtime, Protokollverarbeitung, Suche und Stichprobenentnahme sowie KV-Cache-Verwaltung.
Sie können eine übergeordnete Methode generate()
aufrufen, um die gesamte Ausgabe auf einmal zu generieren, oder die Ausgabe Token für Token streamen.
Siehe Dokumentation unter https://onnxruntime.ai/docs/genai.
Unterstützungsmatrix | Jetzt unterstützt | In Entwicklung | Auf der Roadmap |
---|---|---|---|
Modellarchitekturen | Gemma Lama * Mistral + Phi (Sprache + Vision) Qwen Nemotron | Flüstern | Stabile Diffusion |
API | Python C# C/C++ Java ^ | Ziel-C | |
Plattform | Linux Windows Mac ^ Android ^ | iOS | |
Architektur | x86 x64 Arm64 ~ | ||
Hardwarebeschleunigung | CUDA DirectML | QNN OpenVINO ROCm | |
Merkmale | Interaktive Dekodierung Anpassung (Feinabstimmung) | Spekulative Dekodierung |
* Die Llama-Modellarchitektur unterstützt ähnliche Modellfamilien wie CodeLlama, Vicuna, Yi und mehr.
+ Die Mistral-Modellarchitektur unterstützt ähnliche Modellfamilien wie Zephyr.
^ Erfordert Build aus dem Quellcode
~ Windows-Builds verfügbar, für andere Plattformen ist ein Build aus dem Quellcode erforderlich
Siehe https://onnxruntime.ai/docs/genai/howto/install
Laden Sie das Modell herunter
Huggingface-cli herunterladen microsoft/Phi-3-mini-4k-instruct-onnx --include cpu_and_mobile/cpu-int4-rtn-block-32-acc-level-4/* --local-dir .
Installieren Sie die API
pip install numpy pip install --pre onnxruntime-genai
Führen Sie das Modell aus
import onnxruntime_genai as ogmodel = og.Model('cpu_and_mobile/cpu-int4-rtn-block-32-acc-level-4')tokenizer = og.Tokenizer(model)tokenizer_stream = tokenizer.create_stream() # Setzen Sie die maximale Länge standardmäßig auf einen sinnvollen Wert,# da sie sonst auf den gesamten Kontext gesetzt wird. lengthsearch_options = {}search_options['max_length'] = 2048chat_template = '<|user|>n{input} <|end|> n<|assistant|>'text = input("Input:")if not text: print("Fehler, Eingabe darf nicht leer sein") exitprompt = f'{chat_template.format(input=text)}'input_tokens = tokenizer.encode(prompt)params = og.GeneratorParams(model)params.set_search_options(**search_options)params.input_ids = input_tokensgenerator = og.Generator(model, params )print("Ausgabe: ", end='', Flush=True)try: while nicht generator.is_done(): generator.compute_logits() generator.generate_next_token() new_token = generator.get_next_tokens()[0] print(tokenizer_stream.decode(new_token), end='', Flush=True)außer KeyboardInterrupt: print( " --control+c gedrückt, Generierung abgebrochen--")print()del Generator
Sehen Sie sich die Diskussionen an, um neue Funktionen anzufordern und bestehende Anfragen positiv zu bewerten.
Dieses Projekt freut sich über Beiträge und Vorschläge. Für die meisten Beiträge müssen Sie einem Contributor License Agreement (CLA) zustimmen, in dem Sie erklären, dass Sie das Recht haben, uns die Rechte zur Nutzung Ihres Beitrags zu gewähren, und dies auch tatsächlich tun. Weitere Informationen finden Sie unter https://cla.opensource.microsoft.com.
Wenn Sie eine Pull-Anfrage einreichen, ermittelt ein CLA-Bot automatisch, ob Sie eine CLA bereitstellen müssen, und schmückt die PR entsprechend (z. B. Statusprüfung, Kommentar). Folgen Sie einfach den Anweisungen des Bots. Sie müssen dies nur einmal für alle Repos tun, die unsere CLA verwenden.
Dieses Projekt hat den Microsoft Open Source Verhaltenskodex übernommen. Weitere Informationen finden Sie in den FAQ zum Verhaltenskodex oder wenden Sie sich bei weiteren Fragen oder Kommentaren an [email protected].
Dieses Projekt kann Marken oder Logos für Projekte, Produkte oder Dienstleistungen enthalten. Die autorisierte Nutzung von Microsoft-Marken oder -Logos unterliegt den Marken- und Markenrichtlinien von Microsoft und muss diesen entsprechen. Die Verwendung von Microsoft-Marken oder -Logos in geänderten Versionen dieses Projekts darf keine Verwirrung stiften oder eine Sponsorschaft durch Microsoft implizieren. Jegliche Verwendung von Marken oder Logos Dritter unterliegt den Richtlinien dieser Drittanbieter.