Искусственный интеллект
Mistral 2 и Mistral NeMo: подробное руководство по новейшим LLM, поступающим из Парижа

Парижский стартап, основанный выпускниками Google DeepMind и Meta Мистраль ИИ с 2023 года неизменно вызывает фурор в сообществе искусственного интеллекта.
Mistral AI впервые привлек внимание всего мира своей дебютной моделью Mistral 7B, выпущенной в 2023 году. Эта модель с 7 миллиардами параметров быстро завоевала популярность благодаря своим впечатляющим характеристикам, превзойдя более крупные модели, такие как Llama 2 13B, в различных тестах и даже соперничая с Лама 1 34Б по многим показателям. Какой набор Мистраль 7Б Особняком стояли не только его характеристики, но и доступность – модель можно было легко скачано с GitHub или даже через 13.4-гигабайтный торрент, что делает его доступным для исследователей и разработчиков по всему миру.
Нестандартный подход компании к публикации информации, зачастую исключающий традиционные публикации статей, блогов и пресс-релизов, оказался чрезвычайно эффективным в привлечении внимания сообщества ИИ. Эта стратегия, в сочетании с приверженностью принципам открытого исходного кода, сделала Mistral AI заметным игроком на рынке ИИ.
Стремительный рост Mistral AI в отрасли подтверждается недавним успехом в привлечении финансирования. Компания достигла впечатляющей оценки в 2 миллиарда долларов после раунда финансирования, проведенного Andreessen Horowitz. Это произошло сразу после исторического посевного раунда в 118 миллионов долларов — крупнейшего в истории Европы, — что демонстрирует огромную веру инвесторов в видение и возможности Mistral AI.
Помимо технологических достижений, компания Mistral AI также активно участвует в формировании политики в области ИИ, в частности, в обсуждениях вокруг Закона ЕС об ИИ, где она выступает за сокращение регулирования в сфере ИИ с открытым исходным кодом.
Теперь, в 2024 году, Mistral AI снова подняла планку, выпустив две революционные модели: Мистраль Большой 2 (также известный как Mistral-Large-Instruct-2407) и Мистраль НеМоВ этом подробном руководстве мы подробно рассмотрим особенности, производительность и потенциальные области применения этих впечатляющих моделей ИИ.
Ключевые характеристики Mistral Large 2 включают в себя:
- 123 млрд параметры
- 128k контекстное окно
- Поддержка десятков языков
- Знание 80+ кодирования языки
- Расширенные возможности вызова функций
Модель призвана расширить границы экономической эффективности, скорости и производительности, что делает ее привлекательным вариантом как для исследователей, так и для предприятий, стремящихся использовать передовой искусственный интеллект.
Mistral NeMo: новая модель меньшего размера
В то время как Mistral Large 2 представляет собой лучшую из крупномасштабных моделей Mistral AI, Mistral NeMo, выпущенная в июле 2024 года, использует другой подход. Разработанная совместно с NVIDIA, Mistral NeMo представляет собой более компактную модель с 12 миллиардами параметров, которая, тем не менее, обладает впечатляющими возможностями:
- 12 млрд параметры
- 128k контекст окно
- Самые современные характеристики в своей размерной категории
- Лицензия Apache 2.0 для открытого использования
- С учетом квантования обучение эффективному умозаключению
Mistral NeMo позиционируется как замена системам, в настоящее время использующим Mistral 7B, предлагая повышенную производительность при сохранении простоты использования и совместимости.
Ключевые особенности и возможности
И Mistral Large 2, и Mistral NeMo имеют несколько общих ключевых особенностей, которые выделяют их среди ИИ-среды:
- Большие контекстные окна: Благодаря длине контекста токена 128 тыс. обе модели могут обрабатывать и понимать гораздо более длинные фрагменты текста, обеспечивая более последовательные и контекстуально релевантные выходные данные.
- Мультиязычная поддержка: модели превосходно поддерживают широкий спектр языков, включая английский, французский, немецкий, испанский, итальянский, китайский, японский, корейский, арабский и хинди.
- Расширенные возможности кодирования: Обе модели демонстрируют исключительные навыки генерации кода на многочисленных языках программирования.
- Инструкция следующая: Значительно улучшена способность моделей следовать точным инструкциям и поддерживать многовариантные разговоры.
- Вызов функции: Встроенная поддержка вызова функций позволяет этим моделям динамически взаимодействовать с внешними инструментами и сервисами.
- Рассуждение и решение проблем: Расширенные возможности математических рассуждений и решения сложных задач.
Давайте рассмотрим некоторые из этих функций и посмотрим, как они работают на практике.
Тесты производительности
Чтобы понять истинные возможности Mistral Large 2 и Mistral NeMo, необходимо оценить их производительность в различных бенчмарках. Рассмотрим некоторые ключевые показатели:
Мистраль Большой 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] Generate a short greeting in English, French, German, Spanish, and Japanese. [/INST]
Вот короткие приветствия на запрошенных языках:
Английский: Здравствуйте! Как вы сегодня?
Французский: Бонжур! Прокомментируйте allez-vous aujourd'hui ?
Немец: Привет! Wie geht es Ihnen heute?
Испанский: ¡Привет! ¿Как ты здесь?
Японский: こんにちは!今日はお元気ですか?
[ИНСТ]
Теперь напишите простое «Hello, World!» программа на Python, Java и JavaScript. [/ИНСТ]
Эти примеры демонстрируют как возможности создания многоязычного текста, так и возможности кодирования модели.
Обе модели доступны на различных платформах, таких как Hugging Face, платформа Mistral AI, а также на платформах крупных поставщиков облачных сервисов, таких как Google Cloud Platform, Azure AI Studio, Amazon Bedrock и IBM watsonx.ai. (Мистраль ИИ | Передовой ИИ в ваших руках).
Агентная парадигма и вызов функций
И 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 # Initialize tokenizer and model mistral_models_path = "path/to/mistral/models" # Ensure this path is correct tokenizer = MistralTokenizer.from_file(f"{mistral_models_path}/tokenizer.model.v3") model = Transformer.from_folder(mistral_models_path) # Define a function for getting weather information weather_function = Function( name="get_current_weather", description="Get the current weather", parameters={ "type": "object", "properties": { "location": { "type": "string", "description": "The city and state, e.g. San Francisco, CA", }, "format": { "type": "string", "enum": ["celsius", "fahrenheit"], "description": "The temperature unit to use. Infer this from the user's location.", }, }, "required": ["location", "format"], }, ) # Create a chat completion request with the function completion_request = ChatCompletionRequest( tools=[Tool(function=weather_function)], messages=[ UserMessage(content="What's the weather like today in Paris?"), ], ) # Encode the request tokens = tokenizer.encode_chat_completion(completion_request).tokens # Generate a response out_tokens, _ = generate([tokens], model, max_tokens=256, temperature=0.7, eos_id=tokenizer.instruct_tokenizer.tokenizer.eos_id) result = tokenizer.decode(out_tokens[0]) print(result)
В этом примере мы определяем функцию для получения информации о погоде и включаем ее в наш запрос на завершение чата. Затем модель может использовать эту функцию для получения данных о погоде в реальном времени, демонстрируя, как она может взаимодействовать с внешними системами для предоставления более точной и актуальной информации.
Tekken: более эффективный токенизатор
Mistral NeMo представляет новый токенайзер под названием Tekken, основанный на Tiktoken и обученный на более чем 100 языках. Этот новый токенизатор обеспечивает значительные улучшения в эффективности сжатия текста по сравнению с предыдущими токенизаторами, такими как SentencePiece.
Ключевые особенности Tekken включают в себя:
- На 30 % более эффективное сжатие исходного кода на китайском, итальянском, французском, немецком, испанском и русском языках.
- В 2 раза более эффективное сжатие для корейского языка
- В 3 раза более эффективное сжатие арабского языка
- Превосходит токенизатор Llama 3 при сжатии текста примерно для 85 % всех языков.
Повышенная эффективность токенизации приводит к повышению производительности модели, особенно при работе с многоязычным текстом и исходным кодом. Это позволяет модели обрабатывать больше информации в одном контекстном окне, что приводит к получению более последовательных и контекстуально релевантных результатов.
Лицензирование и доступность
Mistral Large 2 и Mistral NeMo имеют разные модели лицензирования, отражающие предполагаемые варианты использования:
Мистраль Большой 2
- Выпущено по лицензии Mistral Research.
- Разрешает использование и модификацию в исследовательских и некоммерческих целях.
- Для коммерческого использования требуется коммерческая лицензия Mistral.
Мистраль НеМо
- Выпущено под лицензией Apache 2.0
- Разрешено открытое использование, включая коммерческие приложения.
Обе модели доступны на различных платформах:
- Обнимающее лицо: Здесь размещены веса как для базовой, так и для инструктирующей модели.
- Мистраль ИИ: Доступно как
mistral-large-2407
(Мистраль Большой 2) иopen-mistral-nemo-2407
(Мистраль НеМо) - Поставщики облачных услуг: Доступно в Vertex AI от Google Cloud Platform, Azure AI Studio, Amazon Bedrock и IBM watsonx.ai
Для разработчиков, желающих использовать эти модели, вот краткий пример того, как загрузить и использовать Mistral Large 2 с трансформерами Hugging Face:
from transformers import AutoModelForCausalLM, AutoTokenizer model_name = "mistralai/Mistral-Large-Instruct-2407" device = "cuda" # Use GPU if available # Load the model and tokenizer model = AutoModelForCausalLM.from_pretrained(model_name) tokenizer = AutoTokenizer.from_pretrained(model_name) # Move the model to the appropriate device model.to(device) # Prepare input messages = [ {"role": "system", "content": "You are a helpful AI assistant."}, {"role": "user", "content": "Explain the concept of neural networks in simple terms."} ] # Encode input input_ids = tokenizer.apply_chat_template(messages, return_tensors="pt").to(device) # Generate response output_ids = model.generate(input_ids, max_new_tokens=500, do_sample=True) # Decode and print the response response = tokenizer.decode(output_ids[0], skip_special_tokens=True) print(response)
Этот код демонстрирует, как загрузить модель, подготовить входные данные в формате чата, сгенерировать ответ и декодировать выходные данные.