Штучний Інтелект
Mistral 2 і Mistral NeMo: вичерпний путівник щодо найновіших LLM з Парижа

Заснована випускниками паризького стартапу Google DeepMind і Meta Містраль А.І з 2023 року постійно викликав хвилю в спільноті ШІ.
Mistral AI вперше привернув увагу світу своєю дебютною моделлю Mistral 7B, випущеною в 2023 році. Ця модель із 7 мільярдами параметрів швидко завоювала популярність завдяки своїй вражаючій продуктивності, перевершуючи більші моделі, такі як Llama 2 13B, у різних тестах і навіть конкуруючи з ними. Лама 1 34B у багатьох показниках. Який набір Містраль 7Б крім продуктивності, а й доступності – цю модель можна було легко завантажено з GitHub або навіть через 13.4-гігабайтний торрент, що робить його доступним для дослідників і розробників у всьому світі.
Нетрадиційний підхід компанії до випусків, який часто відмовляється від традиційних газет, блогів або прес-релізів, виявився надзвичайно ефективним у приверненні уваги спільноти ШІ. Ця стратегія в поєднанні з їхньою прихильністю до принципів відкритого коду зробила Mistral AI значним гравцем у сфері ШІ.
Швидке зростання Mistral AI в галузі додатково підтверджується недавнім фінансовим успіхом. Компанія досягла приголомшливих 2 мільярдів доларів після раунду фінансування під керівництвом Андріссена Горовіца. Це сталося після історичного стартового раунду вартістю 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, важливо поглянути на їх продуктивність у різних тестах. Давайте розглянемо деякі ключові показники:
Mistral Large 2 Benchmarks
У цій таблиці представлено рівень володіння різними мовами програмування для різних 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]
Ось короткі привітання потрібними мовами:
Англійська: Привіт! Як справи сьогодні?
Французька: Bonjour ! Коментар allez-vous aujourd'hui ?
Німецька: Привіт! Wie geht es Ihnen heute?
Іспанська: ¡Hola! ¿Cómo estás hoy?
Японська: こんにちは!今日はお元気ですか?
[INST]
Тепер напишіть просте «Привіт, світ!» програма на Python, Java та JavaScript. [/INST]
Ці приклади демонструють як генерацію багатомовного тексту, так і можливості кодування моделі.
Обидві моделі доступні на різних платформах, таких як Hugging Face, платформа Mistral AI, а також у основних постачальників хмарних послуг, таких як Google Cloud Platform, Azure AI Studio, Amazon Bedrock і IBM watsonx.ai. (Містраль А. І. | Frontier 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 рази ефективніше стиснення для корейської мови
- Утричі ефективніше стиснення для арабської мови
- Перевершує Llama 3 tokenizer у стисненні тексту приблизно для 85% усіх мов
Ця покращена ефективність токенізації означає кращу продуктивність моделі, особливо при роботі з багатомовним текстом і вихідним кодом. Це дозволяє моделі обробляти більше інформації в одному контекстному вікні, що призводить до більш узгоджених і контекстуально відповідних результатів.
Ліцензування та доступність
Mistral Large 2 і Mistral NeMo мають різні моделі ліцензування, які відображають випадки їхнього передбачуваного використання:
Містраль Великий 2
- Випущено за ліцензією Mistral Research
- Дозволяє використовувати та модифікувати для дослідницьких і некомерційних цілей
- Для комерційного використання потрібна комерційна ліцензія Mistral
Містраль НеМо
- Випущено за ліцензією Apache 2.0
- Дозволяє відкрите використання, включаючи комерційні програми
Обидві моделі доступні на різних платформах:
- Обличчя, що обіймається: Тут розміщено ваги як для базової, так і для моделей з інструкцією
- Містраль А.І: доступний як
mistral-large-2407
(Mistral Large 2) іopen-mistral-nemo-2407
(Mistral NeMo) - Хмарні постачальники послуг: доступно на 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)
Цей код демонструє, як завантажити модель, підготувати вхідні дані у форматі чату, створити відповідь і декодувати вихідні дані.