Запустите Llama, Phi, Gemma, Mistral с помощью ONNX Runtime.
Этот API предоставляет вам простой, гибкий и эффективный способ запуска LLM на устройстве.
Он реализует генеративный цикл искусственного интеллекта для моделей ONNX, включая предварительную и постобработку, вывод с помощью ONNX Runtime, обработку логитов, поиск и выборку, а также управление кэшем KV.
Вы можете вызвать generate()
высокого уровня, чтобы сгенерировать все выходные данные одновременно, или передать выходные данные по одному токену за раз.
См. документацию по адресу https://onnxruntime.ai/docs/genai.
Матрица поддержки | Поддерживается сейчас | В разработке | На дорожной карте |
---|---|---|---|
Модельные архитектуры | Джемма Лама * Мистраль + Фи (язык + зрение) Квен Немотрон | Шепот | Стабильная диффузия |
API | Питон С# С/С++ Ява ^ | Цель-C | |
Платформа | Линукс Окна Мак ^ Андроид ^ | iOS | |
Архитектура | х86 х64 Arm64 ~ | ||
Аппаратное ускорение | КУДА ДиректМЛ | КНН ОпенВИНО РПЦм | |
Функции | Интерактивное декодирование Кастомизация (тонкая настройка) | Спекулятивное декодирование |
* Архитектура модели Llama поддерживает аналогичные семейства моделей, такие как CodeLlama, Vicuna, Yi и другие.
+ Архитектура модели Mistral поддерживает аналогичные семейства моделей, такие как Zephyr.
^ Требуется сборка из исходного кода.
~ Доступны сборки для Windows, требуется сборка из исходного кода для других платформ
См. https://onnxruntime.ai/docs/genai/howto/install.
Скачать модель
huggingface-cli скачать microsoft/Phi-3-mini-4k-instruct-onnx --include cpu_and_mobile/cpu-int4-rtn-block-32-acc-level-4/* --local-dir .
Установите API
pip установить numpy pip install --pre onnxruntime-genai
Запустите модель
импортируйте onnxruntime_genai как ogmodel = og.Model('cpu_and_mobile/cpu-int4-rtn-block-32-acc-level-4')tokenizer = og.Tokenizer(model)tokenizer_stream = tokenizer.create_stream() # Установите максимальную длину на что-то разумное по умолчанию, # так как в противном случае она будет установлена на весь контекст lengthsearch_options = {}search_options['max_length'] = 2048chat_template = '<|user|>n{input} <|end|> n<|assistant|>'text = input("Ввод:")if not text: print("Ошибка, ввод не может быть пустым") 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("Выход: ", end='',lush=True)попробуйте: while не генератор.is_done(): генератор.compute_logits() генератор.generate_next_token() new_token = генератор.get_next_tokens()[0] print(tokenizer_stream.decode(new_token), end='',lush=True), кроме KeyboardInterrupt: print( " --control+c нажата, прерывание генерации --") print()del генератор
См. «Обсуждения», чтобы запросить новые функции и проголосовать за существующие запросы.
Этот проект приветствует вклад и предложения. Большинство вкладов требует от вас согласия с Лицензионным соглашением для авторов (CLA), в котором говорится, что вы имеете право и действительно предоставляете нам права на использование вашего вклада. Подробную информацию можно найти на странице https://cla.opensource.microsoft.com.
Когда вы отправляете запрос на включение, бот CLA автоматически определяет, нужно ли вам предоставить CLA, и соответствующим образом оформляет PR (например, проверку статуса, комментарий). Просто следуйте инструкциям бота. Вам нужно будет сделать это только один раз во всех репозиториях, используя наш CLA.
В этом проекте принят Кодекс поведения Microsoft с открытым исходным кодом. Для получения дополнительной информации см. Часто задаваемые вопросы о Кодексе поведения или свяжитесь с нами по адресу [email protected], если у вас возникнут дополнительные вопросы или комментарии.
Этот проект может содержать товарные знаки или логотипы проектов, продуктов или услуг. Разрешенное использование товарных знаков и логотипов Microsoft регулируется и должно соответствовать Руководству Microsoft по товарным знакам и брендам. Использование товарных знаков или логотипов Microsoft в измененных версиях этого проекта не должно вызывать путаницу или подразумевать спонсорство Microsoft. Любое использование товарных знаков или логотипов третьих лиц регулируется политикой этих третьих сторон.