Exécutez Llama, Phi, Gemma, Mistral avec ONNX Runtime.
Cette API vous offre un moyen simple, flexible et performant d'exécuter des LLM sur un appareil.
Il implémente la boucle d'IA générative pour les modèles ONNX, y compris le pré et post-traitement, l'inférence avec ONNX Runtime, le traitement des logits, la recherche et l'échantillonnage, ainsi que la gestion du cache KV.
Vous pouvez appeler une méthode generate()
de haut niveau pour générer toute la sortie en même temps, ou diffuser la sortie un jeton à la fois.
Consultez la documentation sur https://onnxruntime.ai/docs/genai.
Matrice de support | Pris en charge maintenant | En développement | Sur la feuille de route |
---|---|---|---|
Architectures modèles | Gemme Lama * Mistral + Phi (langage + vision) Qwen Némotron | Chuchoter | Diffusion stable |
API | Python C# C/C++ Java ^ | Objectif-C | |
Plate-forme | Linux Fenêtres Mac ^ Android ^ | IOS | |
Architecture | x86 x64 Bras64 ~ | ||
Accélération matérielle | CUDA DirectML | QNN OuvrirVINO ROCm | |
Caractéristiques | Décodage interactif Personnalisation (mise au point) | Décodage spéculatif |
* L'architecture du modèle Llama prend en charge des familles de modèles similaires telles que CodeLlama, Vicuna, Yi, etc.
+ L'architecture du modèle Mistral prend en charge des familles de modèles similaires telles que Zephyr.
^ Nécessite une construction à partir des sources
~ Versions Windows disponibles, nécessite une génération à partir des sources pour d'autres plates-formes
Voir https://onnxruntime.ai/docs/genai/howto/install
Téléchargez le modèle
huggingface-cli télécharger microsoft/Phi-3-mini-4k-instruct-onnx --include cpu_and_mobile/cpu-int4-rtn-block-32-acc-level-4/* --local-dir .
Installer l'API
pip installer numpy pip install --pre onnxruntime-genai
Exécuter le modèle
importer onnxruntime_genai en tant que ogmodel = og.Model('cpu_and_mobile/cpu-int4-rtn-block-32-acc-level-4')tokenizer = og.Tokenizer(model)tokenizer_stream = tokenizer.create_stream() # Définissez la longueur maximale sur quelque chose de raisonnable par défaut, # car sinon, elle sera définie sur l'ensemble du contexte lengthsearch_options = {}search_options['max_length'] = 2048chat_template = '<|user|>n{input} <|end|> n<|assistant|>'text = input("Input: ")if not text: print("Erreur, l'entrée ne peut pas être vide") 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(modèle, params )print("Sortie : ", end='', flush=True)try : while pas 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)sauf KeyboardInterrupt : print( " --control+c enfoncé, abandon de la génération--")print()del générateur
Consultez les discussions pour demander de nouvelles fonctionnalités et voter pour les demandes existantes.
Ce projet accueille les contributions et suggestions. La plupart des contributions nécessitent que vous acceptiez un contrat de licence de contributeur (CLA) déclarant que vous avez le droit de nous accorder, et que vous nous accordez effectivement, le droit d'utiliser votre contribution. Pour plus de détails, visitez https://cla.opensource.microsoft.com.
Lorsque vous soumettez une pull request, un robot CLA déterminera automatiquement si vous devez fournir un CLA et décorera le PR de manière appropriée (par exemple, vérification du statut, commentaire). Suivez simplement les instructions fournies par le bot. Vous n’aurez besoin de le faire qu’une seule fois pour tous les dépôts utilisant notre CLA.
Ce projet a adopté le code de conduite Microsoft Open Source. Pour plus d’informations, consultez la FAQ sur le code de conduite ou contactez [email protected] pour toute question ou commentaire supplémentaire.
Ce projet peut contenir des marques ou des logos pour des projets, des produits ou des services. L'utilisation autorisée des marques ou logos Microsoft est soumise et doit respecter les directives relatives aux marques et aux marques de Microsoft. L'utilisation des marques ou logos Microsoft dans les versions modifiées de ce projet ne doit pas prêter à confusion ni impliquer le parrainage de Microsoft. Toute utilisation de marques ou de logos tiers est soumise aux politiques de ces tiers.