Штучний інтелект
Mistral 2 і Mistral NeMo: Комплексний гід до останніх LLM від Парижа

Заснована колишніми працівниками Google’s DeepMind і Meta, паризька стартап-компанія Mistral AI постійно робила хвилі в спільноті штучного інтелекту з 2023 року.
Mistral AI вперше привернула увагу світу своєю дебютною моделлю, Mistral 7B, випущеною в 2023 році. Ця модель з 7 мільярдами параметрів швидко здобула популярність завдяки своїй вражаючій продуктивності, перевершуючи більші моделі, такі як Llama 2 13B у різних бенчмарках, і навіть конкуруючи з Llama 1 34B у багатьох метриках. Що відрізняло Mistral 7B, так це не тільки її продуктивність, але й доступність – модель можна було легко завантажити з GitHub або навіть через 13,4-гігабайтний торрент, роблячи її доступною для дослідників і розробників усьому світі.
Нестандартний підхід компанії до випусків, часто відмовляючись від традиційних статей, блогів або прес-релізів, виявився надзвичайно ефективним у приверненні уваги спільноти штучного інтелекту. Ця стратегія, поєднана з їхнім зобов’язанням щодо відкритих джерел, позиціонує Mistral AI як потужного гравця в ландшафті штучного інтелекту.
Швидкий підйом компанії в галузі підтверджується її недавнім успіхом у фінансуванні. Компанія досягла загальної вартості 2 мільярди доларів після раунду фінансування під керівництвом Andreessen Horowitz. Це відбулося після історичного раунду сіяння у розмірі 118 мільйонів доларів – найбільшого в європейській історії – демонструючи величезну віру інвесторів у бачення та можливості Mistral AI.
Поза своїми технологічними досягненнями, Mistral AI також активно бере участь у формуванні політики штучного інтелекту, особливо у дискусіях щодо Закону ЄС про штучний інтелект, де вони відстоюють зменшення регулювання відкритого штучного інтелекту.
Тепер, у 2024 році, Mistral AI знову підняла планку двома революційними моделями: Mistral Large 2 (також відома як Mistral-Large-Instruct-2407) і Mistral NeMo. У цьому комплексному гіді ми глибоко розглянемо функції, продуктивність та потенційні застосування цих вражаючих моделей штучного інтелекту.
Ключові характеристики Mistral Large 2 включають:
- 123 мільярди параметрів
- 128к вікно контексту
- Підтримка десятків мов
- Професіоналізм у 80+ мовах програмування
- Розширені можливості виклику функцій
Модель розроблена для розширення меж ефективності витрат, швидкості та продуктивності, роблячи її привабливою опцією як для дослідників, так і для підприємств, які хочуть використовувати передові технології штучного інтелекту.
Mistral NeMo: Нова менша модель
Хоча Mistral Large 2 представляє найкраще з великомасштабних моделей Mistral AI, Mistral NeMo, випущена в липні 2024 року, підходить до цього з іншого боку. Розроблена у співпраці з NVIDIA, Mistral NeMo є більш компактною моделлю з 12 мільярдами параметрів, яка все ж таки пропонує вражаючі можливості:
- 12 мільярдів параметрів
- 128к контекст вікно
- Продуктивність рівня стану мистецтва в своїй категорії розміру
- Ліцензія Apache 2.0 для відкритого використання
- Осведомлене про квантування навчання для ефективної інференції
Mistral NeMo позиціонується як заміна системи для систем, які зараз використовують Mistral 7B, пропонуючи покращену продуктивність при збереженні легкості використання та сумісності.
Ключові функції та можливості
Обидві моделі, Mistral Large 2 і Mistral NeMo, мають кілька ключових функцій, які відрізняють їх у ландшафті штучного інтелекту:
- Великі вікна контексту: З довжиною контексту 128к токенів, обидві моделі можуть обробляти та розуміти довші частини тексту, забезпечуючи більш узгоджену та контекстно-відповідну продуктивність.
- Мультимовна підтримка: Моделі досконало володіють широким спектром мов, включаючи англійську, французьку, німецьку, іспанську, італійську, китайську, японську, корейську, арабську та гінді.
- Розширені можливості програмування: Обидві моделі демонструють винятковий професіоналізм у генерації коду в багатьох мовах програмування.
- Виконання інструкцій: Значні поліпшення були зроблені у здатності моделей слідувати точним інструкціям та обробляти багаторазові розмови.
- Виклик функцій: Вбудована підтримка виклику функцій дозволяє цим моделям динамічно взаємодіяти з зовнішніми інструментами та службами.
- Розумування та розв’язання проблем: Покращені можливості у математичному розумінні та складних завданнях розв’язання проблем.
Давайте розглянемо деякі з цих функцій та проаналізуємо, як вони працюють на практиці.
Бенчмарки продуктивності
Щоб зрозуміти справжні можливості Mistral Large 2 і Mistral NeMo, необхідно розглянути їхню продуктивність у різних бенчмарках. Давайте розглянемо деякі ключові метрики:
Бенчмарки Mistral Large 2
Ця таблиця представляє професіоналізм різних LLM у різних мовах програмування. Моделі, такі як Mistral Large 2 (24.07), Llama 3.1 (405B) і GPT-4o, оцінюються за їхню здатність розуміти та генерувати код у мовах, таких як Python, C++, Bash, Java, TypeScript, PHP і C#.
Llama 3.1 405B демонструє сильну продуктивність у багатьох мовах, з особливо високими балами у Python і Java. Ця професіоналізм є критично важливим для застосунків, які включають генерацію коду, налагодження та розробку програмного забезпечення, роблячи ці моделі цінними інструментами для розробників.
Бенчмарки Mistral NeMo
Хоча конкретні бенчмарки для Mistral NeMo не надаються у наданій інформації, вона описується як така, що пропонує продуктивність рівня стану мистецтва у своїй категорії розміру. Модель перевершує інші недавні відкриті попередньо треновані моделі, такі як Gemma 2 9B і Llama 3 8B, у різних завданнях.
Мультимовна та кодова майстерність
Однією з видатних функцій обидвох моделей, Mistral Large 2 і Mistral NeMo, є їх виняткова мультимовна здатність. Це особливо важливо у нашому все більш глобалізованому світі, де моделі штучного інтелекту повинні розуміти та генерувати контент у багатьох мовах.
Mistral Large 2, наприклад, підтримує десятки мов, включаючи французьку, німецьку, іспанську, італійську, португальську, арабську, гінді, російську, китайську, японську та корейську. Ця мультимовна професіоналізм розширюється за межі простого перекладу, охоплюючи нюансоване розуміння та генерацію у цих мовах.
Щоб проілюструвати це, давайте розглянемо приклад генерації тексту Mistral Large 2 у декількох мовах:
[INST] Генеруйте коротке привітання англійською, французькою, німецькою, іспанською та японською. [/INST]
Ось короткі привітання у запрошених мовах:
Англійська: Привіт! Як у вас справи сьогодні?
Французька: Бонжур ! Комент алез-вуз аужд’юй ?
Німецька: Галло! Ві геет ес Іхн гейте?
Іспанська: Голос! Як ти сьогодні?
Японська: こんにちは!今日はお元気ですか?
[INST]
Тепер напишіть просту програму “Привіт, світ!” на Python, Java та JavaScript. [/INST]
Ці приклади демонструють як мультимовну генерацію тексту, так і кодові можливості моделі.
Парадигма агента та виклик функцій
Обидві моделі, Mistral Large 2 і Mistral NeMo, приймають агенто-центричний дизайн, який представляє парадигматичний зсув у тому, як ми взаємодіємо з моделями штучного інтелекту. Цей підхід фокусується на створенні моделей, здатних взаємодіяти зі своєю середовищем, приймати рішення та виконувати дії для досягнення конкретних цілей.
Ключовою функцією, яка дозволяє цю парадигму, є вбудована підтримка виклику функцій. Це дозволяє моделям динамічно взаємодіяти з зовнішніми інструментами та службами, ефективно розширюючи їхні можливості за межі простої генерації тексту.
Давайте розглянемо приклад того, як виклик функції може працювати з Mistral Large 2:
from mistral_common.protocol.instruct.tool_calls import Function, Tool
from mistral_inference.transformer import Transformer
from mistral_inference.generate import generate
from mistral_common.tokens.tokenizers.mistral import MistralTokenizer
from mistral_common.protocol.instruct.messages import UserMessage
from mistral_common.protocol.instruct.request import ChatCompletionRequest
# Ініціалізація токенізації та моделі
mistral_models_path = "шлях/до/моделей/mistral" # Перевірте, що шлях правильний
tokenizer = MistralTokenizer.from_file(f"{mistral_models_path}/tokenizer.model.v3")
model = Transformer.from_folder(mistral_models_path)
# Визначення функції для отримання інформації про погоду
weather_function = Function(
name="get_current_weather",
description="Отримати поточну погоду",
parameters={
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "Місто та область, наприклад Сан-Франциско, КА",
},
"format": {
"type": "string",
"enum": ["цельсій", "фаренгейт"],
"description": "Одиниця температури для використання. Виникнути з місця користувача.",
},
},
"required": ["location", "format"],
},
)
# Створення запиту на завершення чату з функцією
completion_request = ChatCompletionRequest(
tools=[Tool(function=weather_function)],
messages=[
UserMessage(content="Яка погода сьогодні в Парижі?"),
],
)
# Кодування входу
input_ids = tokenizer.apply_chat_template(completion_request, return_tensors="pt").to(device)
# Генерація відповіді
output_ids = model.generate(input_ids, max_new_tokens=256, do_sample=True)
# Декодування та друкування відповіді
response = tokenizer.decode(output_ids[0], skip_special_tokens=True)
print(response)
У цьому прикладі ми визначаємо функцію для отримання інформації про погоду та включаємо її у наш запит на завершення чату. Модель може тоді використовувати цю функцію для отримання інформації про погоду в режимі реального часу, демонструючи, як вона може взаємодіяти з зовнішніми системами для надання більш точної та актуальної інформації.
Tekken: Більш ефективний токенізаційний інструмент
Mistral NeMo вводить новий токенізаційний інструмент під назвою Tekken, який заснований на Tiktoken і тренувався на понад 100 мовах. Цей новий токенізаційний інструмент пропонує суттєві поліпшення ефективності текстової компресії порівняно з попередніми токенізаційними інструментами, такими як SentencePiece.
Ключові функції Tekken включають:
- 30% більш ефективна компресія для вихідного коду, китайської, італійської, французької, німецької, іспанської та російської
- 2 рази більш ефективна компресія для корейської
- 3 рази більш ефективна компресія для арабської
- Перевершує токенізаційний інструмент Llama 3 при стисненні тексту для приблизно 85% усіх мов
Ця покращена ефективність токенізації перекладується у кращу продуктивність моделі, особливо при обробці мультимовного тексту та вихідного коду. Це дозволяє моделі обробляти більше інформації у тому ж вікні контексту, що призводить до більш узгодженої та контекстно-відповідної продукції.
Ліцензування та доступність
Mistral Large 2 і Mistral NeMo мають різні моделі ліцензування, що відображає їхні призначені випадки використання:
Mistral Large 2
- Випущена під ліцензією Mistral Research
- Дозволяє використання та модифікацію для дослідницьких та некомерційних цілей
- Комерційне використання вимагає ліцензії Mistral Commercial
Mistral NeMo
- Випущена під ліцензією Apache 2.0
- Дозволяє відкрите використання, включаючи комерційні застосування
Обидві моделі доступні через різні платформи:
- Hugging Face: Ваги для обидвох базових і інструктивних моделей розміщені тут
- Mistral AI: Доступна як
mistral-large-2407(Mistral Large 2) іopen-mistral-nemo-2407(Mistral NeMo) - Постачальники хмарних послуг: Доступна на Google Cloud Platform’s Vertex AI, Azure AI Studio, Amazon Bedrock і IBM watsonx.ai
Для розробників, які хочуть використовувати ці моделі, ось швидкий приклад того, як завантажити та використовувати Mistral Large 2 з Hugging Face transformers:
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "mistralai/Mistral-Large-Instruct-2407"
device = "cuda" # Використовуйте GPU, якщо доступно
# Завантаження моделі та токенізаційного інструменту
model = AutoModelForCausalLM.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)
# Переміщення моделі на відповідний пристрій
model.to(device)
# Підготовка входу
messages = [
{"role": "system", "content": "Ви є корисним помічником штучного інтелекту."},
{"role": "user", "content": "Поясніть концепцію нейронних мереж у простих термінах."},
]
# Кодування входу
input_ids = tokenizer.apply_chat_template(messages, return_tensors="pt").to(device)
# Генерація відповіді
output_ids = model.generate(input_ids, max_new_tokens=500, do_sample=True)
# Декодування та друкування відповіді
response = tokenizer.decode(output_ids[0], skip_special_tokens=True)
print(response)
Цей код демонструє, як завантажити модель, підготувати вхід у форматі чату, згенерувати відповідь та декодувати вихід.
















