Modele i platformy AI
Mistral 2 i Mistral NeMo: Kompletny przewodnik po najnowszych modelach LLM z Paryża

Założona przez absolwentów Google DeepMind i Meta, paryska firma Mistral AI nieustannie robi furorę w społeczności AI od 2023 roku.
Mistral AI po raz pierwszy zwróciła uwagę światu swoim debiutującym modelem, Mistral 7B, wydanym w 2023 roku. Ten model z 7 miliardami parametrów szybko zyskał uznanie za swoją imponującą wydajność, przewyższając większe modele, takie jak Llama 2 13B w różnych testach i nawet rywalizując z Llama 1 34B w wielu wskaźnikach. To, co wyróżniało Mistral 7B, nie było tylko jego wydajnością, ale także dostępnością – model mógł być łatwo pobrany z GitHub lub nawet za pośrednictwem 13,4-gigabajtowego torrentu, co sprawiło, że był on łatwo dostępny dla naukowców i deweloperów na całym świecie.
Nietradycyjne podejście firmy do wydań, często rezygnujące z tradycyjnych artykułów, blogów lub komunikatów prasowych, okazało się niezwykle skuteczne w przyciąganiu uwagi społeczności AI. Ta strategia, w połączeniu z ich zaangażowaniem w otwarte źródło, umieściła Mistral AI jako potężnego gracza w pejzażu AI.
Szybki wzrost Mistral AI w branży potwierdza również ich niedawny sukces finansowy. Firma osiągnęła olbrzymią wycenę 2 miliardów dolarów po rundzie finansowania prowadzonej przez Andreessen Horowitz. To nastąpiło po historycznej rundzie seed o wartości 118 milionów dolarów – największej w historii Europy – co pokazuje, jak wielką wiarę inwestorzy mają w wizji i możliwościach Mistral AI.
Poza postępami technologicznymi, Mistral AI aktywnie uczestniczyła w kształtowaniu polityki AI, zwłaszcza w dyskusjach na temat unijnego aktu AI, gdzie opowiadała się za zmniejszeniem regulacji w przypadku otwartego źródła AI.
Teraz, w 2024 roku, Mistral AI ponownie podniosła poprzeczkę, wprowadzając dwa przełomowe modele: Mistral Large 2 (znany również jako Mistral-Large-Instruct-2407) i Mistral NeMo. W tym kompletnym przewodniku zagłębimy się w funkcje, wydajność i potencjalne zastosowania tych imponujących modeli AI.
Kluczowe specyfikacje Mistral Large 2 obejmują:
- 123 miliardy parametrów
- 128k okien kontekstowych
- Obsługa dziesiątek języków
- Biegłość w 80+ językach programowania
- Zaawansowane możliwości wywoływania funkcji
Model został zaprojektowany, aby przekroczyć granice efektywności kosztowej, szybkości i wydajności, co czyni go atrakcyjną opcją zarówno dla naukowców, jak i przedsiębiorstw zainteresowanych wykorzystaniem najnowocześniejszych technologii AI.
Mistral NeMo: Nowy, mniejszy model
Podczas gdy Mistral Large 2 reprezentuje najlepsze, co może zaoferować Mistral AI w zakresie dużych modeli, Mistral NeMo, wydany w lipcu 2024 roku, przyjmuje odmienny podejście. Opracowany we współpracy z NVIDIA (NVDA ), Mistral NeMo to bardziej kompaktowy model z 12 miliardami parametrów, który nadal oferuje imponujące możliwości:
- 12 miliardów parametrów
- 128k okien kontekstowych
- Najnowocześniejsza wydajność w swojej kategorii
- Licencja Apache 2.0 na użytek otwarty
- Quantization-aware szkolenie dla wydajnej inferencji
Mistral NeMo jest pozycjonowany jako zamiennik dla systemów, które obecnie wykorzystują Mistral 7B, oferując lepszą wydajność przy zachowaniu łatwości użycia i kompatybilności.
Kluczowe funkcje i możliwości
Obydwa modele, Mistral Large 2 i Mistral NeMo, dzielą kilka kluczowych funkcji, które wyróżniają je na tle innych modeli AI:
- Duże okna kontekstowe: Z długością kontekstu 128k tokenów, oba modele mogą przetwarzać i rozumieć znacznie dłuższe fragmenty tekstu, umożliwiając bardziej spójne i kontekstowo istotne dane wyjściowe.
- Wspieranie wielu języków: Modele te wyróżniają się w szerokim zakresie języków, w tym angielskim, francuskim, niemieckim, hiszpańskim, włoskim, chińskim, japońskim, koreańskim, arabskim i hindi.
- Zaawansowane możliwości programowania: Oba modele wykazują wyjątkową biegłość w generowaniu kodu w wielu językach programowania.
- Przestrzeganie instrukcji: Zostały wprowadzone znaczące ulepszenia w możliwościach modeli do przestrzegania precyzyjnych instrukcji i obsługi wieloetapowych rozmów.
- Wywoływanie funkcji: Natywne wsparcie dla wywoływania funkcji pozwala tym modelom na dynamiczną interakcję z zewnętrznymi narzędziami i usługami.
- Rozumowanie i rozwiązywanie problemów: Ulepszone możliwości w rozumowaniu matematycznym i złożonych zadaniach rozwiązywania problemów.
Przeanalizujmy niektóre z tych funkcji i zobaczmy, jak radzą sobie one w praktyce.
Wyniki testów wydajności
Aby zrozumieć prawdziwe możliwości Mistral Large 2 i Mistral NeMo, konieczne jest spojrzenie na ich wyniki w różnych testach. Przeanalizujmy kilka kluczowych wskaźników:
Wyniki testów Mistral Large 2
Ten tabela przedstawia biegłość różnych modeli LLM w różnych językach programowania. Modele takie jak Mistral Large 2 (24.07), Llama 3.1 (405B) i GPT-4o są oceniane pod kątem ich zdolności do zrozumienia i generowania kodu w językach takich jak Python, C++, Bash, Java, TypeScript, PHP i C#.
Llama 3.1 405B wykazuje silną wydajność w wielu językach, ze szczególnie wysokimi wynikami w Pythonie i Javie. Ta biegłość jest kluczowa w aplikacjach związanych z generowaniem kodu, debugowaniem i rozwojem oprogramowania, co sprawia, że te modele są cennymi narzędziami dla deweloperów.
Wyniki testów Mistral NeMo
Chociaż konkretnych wyników testowych dla Mistral NeMo nie podano w dostarczonych informacjach, opisano go jako oferującego najnowocześniejszą wydajność w swojej kategorii. Model przewyższa inne niedawne modele open-source, takie jak Gemma 2 9B i Llama 3 8B, w różnych zadaniach.
Wielojęzyczność i możliwości programowania
Jedną z wyróżniających się cech obu modeli, Mistral Large 2 i Mistral NeMo, jest ich wyjątkowa wielojęzyczność. Jest to szczególnie ważne w naszym coraz bardziej zglobalizowanym świecie, gdzie modele AI muszą rozumieć i generować treści w wielu językach.
Mistral Large 2, na przykład, obsługuje dziesiątki języków, w tym francuski, niemiecki, hiszpański, włoski, portugalski, arabski, hindi, rosyjski, chiński, japoński i koreański. Ta wielojęzyczna biegłość wykracza poza zwykłe tłumaczenie, obejmując nuansowane zrozumienie i generowanie w tych językach.
Aby zilustrować to, przyjrzyjmy się przykładowi, w którym Mistral Large 2 generuje tekst w wielu językach:
[INST] Generate a short greeting in English, French, German, Spanish, and Japanese. [/INST]
Here are short greetings in the requested languages:
English: Hello! How are you today?
French: Bonjour ! Comment allez-vous aujourd’hui ?
German: Hallo! Wie geht es Ihnen heute?
Spanish: ¡Hola! ¿Cómo estás hoy?
Japanese: こんにちは!今日はお元気ですか?
[INST]
Now, write a simple “Hello, World!” program in Python, Java, and JavaScript. [/INST]
Te przykłady pokazują zarówno wielojęzyczne generowanie tekstu, jak i możliwości programowania modelu.
Oba modele są dostępne na różnych platformach, takich jak Hugging Face, platforma Mistral AI oraz główni dostawcy usług chmurowych, jak Google Cloud Platform, Azure AI Studio, Amazon (AMZN ) Bedrock i IBM watsonx.ai (Mistral AI | Frontier AI in your hands).
Paradygmat agenty i wywoływanie funkcji
Obydwa modele, Mistral Large 2 i Mistral NeMo, przyjmują agenty-centryczny projekt, który reprezentuje zmianę paradygmatu w sposobie, w jaki interaktywnie korzystamy z modeli AI. To podejście koncentruje się na budowaniu modeli zdolnych do interakcji ze swoim środowiskiem, podejmowania decyzji i wykonywania działań w celu osiągnięcia konkretnych celów.
Kluczową funkcją umożliwiającą ten paradygmat jest natywne wsparcie dla wywoływania funkcji. Pozwala to modelom na dynamiczną interakcję z zewnętrznymi narzędziami i usługami, efektywnie rozszerzając ich możliwości poza zwykłe generowanie tekstu.
Przyjrzyjmy się przykładowi, w jaki sposób wywoływanie funkcji może działać z 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
<p># 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)</p>
<p># 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"],
},
)</p>
<p># 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?"),
],
)</p>
<p># Encode the request
tokens = tokenizer.encode_chat_completion(completion_request).tokens</p>
<p># Generate a response
output_ids = model.generate(input_ids, max_new_tokens=256, do_sample=True)</p>
<p># Decode and print the response
response = tokenizer.decode(output_ids[0])
print(response)</p>
W tym przykładzie definiujemy funkcję do pobierania informacji o pogodzie i włączamy ją do naszego żądania uzupełnienia rozmowy. Model może następnie użyć tej funkcji, aby pobrać bieżące dane pogodowe, pokazując, jak może on interaktywnie współpracować z zewnętrznymi systemami, aby dostarczyć bardziej dokładne i aktualne informacje.
Tekken: Bardziej wydajny tokenizator
Mistral NeMo wprowadza nowy tokenizator o nazwie Tekken, który opiera się na Tiktoken i został przeszkolony na ponad 100 językach. Ten nowy tokenizator oferuje znaczące ulepszenia w wydajności kompresji tekstu w porównaniu z poprzednimi tokenizatorami, takimi jak SentencePiece.
Kluczowe funkcje Tekken obejmują:
- 30% większa efektywność kompresji dla kodu źródłowego, chińskiego, włoskiego, francuskiego, niemieckiego, hiszpańskiego i rosyjskiego
- 2-krotnie większa efektywność kompresji dla koreańskiego
- 3-krotnie większa efektywność kompresji dla arabskiego
- Przewyższa tokenizator Llama 3 w kompresji tekstu dla około 85% wszystkich języków
Ta poprawiona efektywność tokenizacji przekłada się na lepszą wydajność modelu, zwłaszcza przy pracy z wielojęzycznym tekstem i kodem źródłowym. Pozwala modelowi przetwarzać więcej informacji w ramach tego samego okna kontekstowego, prowadząc do bardziej spójnych i kontekstowo istotnych danych wyjściowych.
Licensing i dostępność
Mistral Large 2 i Mistral NeMo mają różne modele licencyjne, odzwierciedlające ich zamierzone przypadki użycia:
Mistral Large 2
- Wydany na licencji Mistral Research License
- Zezwala na użycie i modyfikację do celów badawczych i niekomercyjnych
- Użycie komercyjne wymaga licencji Mistral Commercial License
Mistral NeMo
- Wydany na licencji Apache 2.0
- Zezwala na otwarte użycie, w tym aplikacje komercyjne
Oba modele są dostępne na różnych platformach:
- Hugging Face: Wagi dla obu modeli podstawowych i instruktażowych są hostowane tutaj
- Mistral AI: Dostępne jako
mistral-large-2407(Mistral Large 2) iopen-mistral-nemo-2407(Mistral NeMo) - Dostawcy usług chmurowych: Dostępne na Google Cloud Platform’s Vertex AI, Azure AI Studio, Amazon Bedrock i IBM watsonx.ai
Dla deweloperów, którzy chcą wykorzystywać te modele, oto szybki przykład, jak załadować i użyć Mistral Large 2 z Hugging Face transformers:
from transformers import AutoModelForCausalLM, AutoTokenizer
<p>model_name = "mistralai/Mistral-Large-Instruct-2407"
device = "cuda" # Use GPU if available</p>
<p># Load the model and tokenizer
model = AutoModelForCausalLM.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)</p>
<p># Move the model to the appropriate device
model.to(device)</p>
<p># Prepare input
messages = [
{"role":"system", "content":"You are a helpful AI assistant."},
{"role":"user", "content":"Explain the concept of neural networks in simple terms."}
]</p>
<p># Encode input
input_ids = tokenizer.apply_chat_template(messages, return_tensors="pt").to(device)</p>
<p># Generate response
output_ids = model.generate(input_ids, max_new_tokens=500, do_sample=True)</p>
<p># Decode and print the response
response = tokenizer.decode(output_ids[0], skip_special_tokens=True)
print(response)</p>
Ten kod pokazuje, jak załadować model, przygotować dane wejściowe w formacie rozmowy, wygenerować odpowiedź i zdekodować dane wyjściowe.
















