Artificial Intelligence
Mistral 2 i Mistral NeMo: kompleksowy przewodnik po najnowszym LLM pochodzącym z Paryża

Założona przez byłych pracowników Google DeepMind i Meta, firma typu startup z siedzibą w Paryżu Sztuczna inteligencja Mistrala od 2023 r. niezmiennie cieszy się popularnością w społeczności AI.
Mistral AI po raz pierwszy przykuł uwagę świata swoim debiutanckim modelem Mistral 7B, wydanym w 2023 roku. Ten model o 7 miliardach parametrów szybko zyskał popularność dzięki imponującej wydajności, przewyższając większe modele, takie jak Llama 2 13B, w różnych testach porównawczych, a nawet rywalizując z Lama 1 34B w wielu metrykach. Jaki zestaw Mistrala 7B wyróżniała się nie tylko wydajnością, ale także przystępnością – model można było łatwo złożyć pobrane z GitHub lub nawet za pośrednictwem 13.4-gigabajtowego torrenta, dzięki czemu jest łatwo dostępny dla badaczy i programistów na całym świecie.
Niekonwencjonalne podejście firmy do publikacji, często rezygnujące z tradycyjnych artykułów, blogów czy komunikatów prasowych, okazało się niezwykle skuteczne w przyciąganiu uwagi społeczności AI. Ta strategia, w połączeniu z zaangażowaniem w zasady open source, zapewniła Mistral AI pozycję silnego gracza na rynku sztucznej inteligencji.
Szybki rozwój Mistral AI w branży jest dodatkowo potwierdzony niedawnym sukcesem finansowym. Firma osiągnęła oszałamiającą wycenę na poziomie 2 miliardów dolarów po rundzie finansowania, której przewodził Andreessen Horowitz. Stało się to tuż po historycznej rundzie zalążkowej o wartości 118 milionów dolarów – największej w historii Europy – co świadczy o ogromnym zaufaniu inwestorów do wizji i możliwości Mistral AI.
Oprócz rozwoju technologicznego firma Mistral AI aktywnie uczestniczyła w kształtowaniu polityki dotyczącej sztucznej inteligencji, zwłaszcza w dyskusjach na temat unijnej ustawy o sztucznej inteligencji, gdzie opowiadała się za ograniczeniem regulacji dotyczących sztucznej inteligencji opartej na otwartym kodzie źródłowym.
Teraz, w 2024 roku, Mistral AI po raz kolejny podniósł poprzeczkę dzięki dwóm przełomowym modelom: Mistral Duży 2 (znany również jako Mistral-Large-Instruct-2407) i Mistral NeMoW tym kompleksowym przewodniku zagłębimy się w funkcje, wydajność i potencjalne zastosowania tych imponujących modeli sztucznej inteligencji.
Kluczowe specyfikacje Mistral Large 2 obejmują:
- 123 mld parametry
- 128k okno kontekstowe
- Obsługa kilkudziesięciu języków
- biegłość w Kodowanie 80+ języki
- Zaawansowane możliwości wywoływania funkcji
Model zaprojektowano tak, aby przesuwał granice efektywności kosztowej, szybkości i wydajności, co czyni go atrakcyjną opcją zarówno dla badaczy, jak i przedsiębiorstw chcących wykorzystać najnowocześniejszą sztuczną inteligencję.
Mistral NeMo: nowy, mniejszy model
Podczas gdy Mistral Large 2 reprezentuje najlepszy z modeli wielkoskalowych Mistral AI, Mistral NeMo, wydany w lipcu 2024 roku, przyjmuje inne podejście. Opracowany we współpracy z firmą NVIDIA, Mistral NeMo to bardziej kompaktowy model o 12 miliardach parametrów, który wciąż oferuje imponujące możliwości:
- 12 mld parametry
- Kontekst 128k okno
- Najnowocześniejsza wydajność w swojej kategorii wielkości
- Licencja Apache 2.0 do użytku otwartego
- Świadomość kwantyzacji szkolenie w zakresie skutecznego wnioskowania
Mistral NeMo jest pozycjonowany jako bezpośredni zamiennik systemów obecnie korzystających z Mistral 7B, oferujący zwiększoną wydajność przy jednoczesnym zachowaniu łatwości użytkowania i kompatybilności.
Kluczowe cechy i możliwości
Zarówno Mistral Large 2, jak i Mistral NeMo mają kilka wspólnych kluczowych cech, które wyróżniają je na tle sztucznej inteligencji:
- Duże okna kontekstowe: Przy długości kontekstu tokenów wynoszącej 128 tys. oba modele mogą przetwarzać i rozumieć znacznie dłuższe fragmenty tekstu, zapewniając bardziej spójne i kontekstowo odpowiednie wyniki.
- Obsługa wielu języków: Modele doskonale posługują się szeroką gamą 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 kodowania: Oba modele wykazują wyjątkową biegłość w generowaniu kodu w wielu językach programowania.
- Instrukcja poniżej:Wprowadzono znaczące udoskonalenia w zakresie zdolności modeli do wykonywania precyzyjnych instrukcji i prowadzenia rozmów składających się z wielu zwrotów akcji.
- Wywołanie funkcji: Natywna obsługa wywoływania funkcji umożliwia tym modelom dynamiczną interakcję z zewnętrznymi narzędziami i usługami.
- Rozumowanie i rozwiązywanie problemów: Zwiększone możliwości rozumowania matematycznego i rozwiązywania złożonych zadań.
Przyjrzyjmy się bliżej niektórym z tych funkcji i sprawdźmy, jak sprawdzają się w praktyce.
Benchmarki wydajności
Aby zrozumieć rzeczywiste możliwości Mistral Large 2 i Mistral NeMo, konieczne jest przyjrzenie się ich wydajności w różnych testach porównawczych. Przyjrzyjmy się kilku kluczowym wskaźnikom:
Testy porównawcze Mistral Large 2
Poniższa tabela przedstawia biegłość różnych 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 rozumienia i generowania kodu w językach takich jak Python, C++, Bash, Java, TypeScript, PHP i C#.
Lama 3.1 405B wykazuje dobrą wydajność w wielu językach, ze szczególnie wysokimi wynikami w Pythonie i Javie. Ta biegłość ma kluczowe znaczenie w zastosowaniach obejmujących generowanie kodu, debugowanie i tworzenie oprogramowania, dzięki czemu modele te są cennymi narzędziami dla programistów.
Testy Mistral NeMo
Chociaż w podanych informacjach nie podano konkretnych wyników testów porównawczych dla Mistral NeMo, model ten jest opisywany jako oferujący najnowocześniejszą wydajność w swojej kategorii rozmiarów. Model ten przewyższa inne, niedawno opracowane, wstępnie wytrenowane modele open source, takie jak Gemma 2 9B i Llama 3 8B, w różnych zadaniach.
Wielojęzyczność i umiejętność kodowania
Jedną z wyróżniających się cech Mistral Large 2 i Mistral NeMo są ich wyjątkowe możliwości wielojęzyczne. Jest to szczególnie ważne w naszym coraz bardziej zglobalizowanym świecie, w którym modele sztucznej inteligencji muszą rozumieć i generować treści w wielu językach.
Na przykład Mistral Large 2 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 i obejmuje zróżnicowane zrozumienie i generowanie w tych językach.
Aby to zobrazować, przyjrzyjmy się przykładowi generowania tekstu w wielu językach przez Mistral Large 2:
[INST] Generate a short greeting in English, French, German, Spanish, and Japanese. [/INST]
Oto krótkie pozdrowienia w żądanych językach:
Angielski: Witam! Jak się dzisiaj miewasz?
Francuski: Bonjour! Skomentuj allez-vous aujourd'hui ?
Niemiecki: Cześć! Wie geht es Ihnen heute?
Hiszpański: ¡Hola! ¿Cómo estás hoy?
Japoński: こんにちは!今日はお元気ですか?
[INST]
Teraz napisz proste „Hello, World!” program w Pythonie, Javie i JavaScript. [/INST]
Te przykłady pokazują zarówno możliwości generowania wielojęzycznego tekstu, jak i kodowania modelu.
Oba modele są dostępne na różnych platformach, takich jak Hugging Face, platforma Mistral AI oraz u głównych dostawców usług w chmurze, takich jak Google Cloud Platform, Azure AI Studio, Amazon Bedrock i IBM watsonx.ai (Sztuczna inteligencja Mistrala | Graniczna sztuczna inteligencja w Twoich rękach).
Paradygmat agentyczny i wywoływanie funkcji
Zarówno Mistral Large 2, jak i Mistral NeMo charakteryzują się konstrukcją skoncentrowaną na agentach, co stanowi zmianę paradygmatu w sposobie interakcji z modelami sztucznej inteligencji. Podejście to koncentruje się na budowaniu modeli zdolnych do interakcji z otoczeniem, podejmowania decyzji i podejmowania działań w celu osiągnięcia określonych celów.
Kluczową cechą umożliwiającą ten paradygmat jest natywna obsługa wywoływania funkcji. Pozwala to modelom na dynamiczną interakcję z zewnętrznymi narzędziami i usługami, skutecznie rozszerzając ich możliwości poza proste generowanie tekstu.
Przyjrzyjmy się przykładowi, w jaki sposób wywoływanie funkcji może działać w 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)
W tym przykładzie definiujemy funkcję uzyskiwania informacji o pogodzie i uwzględniamy ją w naszej prośbie o zakończenie czatu. Model może następnie użyć tej funkcji do pobrania danych pogodowych w czasie rzeczywistym, demonstrując, w jaki sposób może współdziałać z systemami zewnętrznymi, aby zapewnić dokładniejsze i aktualne informacje.
Tekken: bardziej wydajny tokenizer
Mistral NeMo wprowadza nowy tokenizer o nazwie Tekken, który opiera się na Tiktokenie i jest przeszkolony w ponad 100 językach. Ten nowy tokenizator oferuje znaczną poprawę wydajności kompresji tekstu w porównaniu do poprzednich tokenizatorów, takich jak SentencePiece.
Kluczowe cechy Tekkena to:
- 30% wydajniejsza kompresja kodu źródłowego, chińskiego, włoskiego, francuskiego, niemieckiego, hiszpańskiego i rosyjskiego
- 2x wydajniejsza kompresja dla języka koreańskiego
- 3x wydajniejsza kompresja dla języka arabskiego
- Przewyższa tokenizator Llama 3 w kompresji tekstu dla około 85% wszystkich języków
Ta poprawiona wydajność tokenizacji przekłada się na lepszą wydajność modelu, szczególnie w przypadku wielojęzycznego tekstu i kodu źródłowego. Pozwala modelowi przetwarzać więcej informacji w tym samym oknie kontekstowym, co prowadzi do bardziej spójnych i odpowiednich kontekstowo wyników.
Licencjonowanie i dostępność
Mistral Large 2 i Mistral NeMo mają różne modele licencjonowania, odzwierciedlające ich zamierzone przypadki użycia:
Mistral Duży 2
- Wydany na licencji Mistral Research
- Umożliwia wykorzystanie i modyfikację do celów badawczych i niekomercyjnych
- Użytek komercyjny wymaga licencji komercyjnej Mistral
Mistral NeMo
- Wydany na licencji Apache 2.0
- Umożliwia otwarte wykorzystanie, w tym aplikacje komercyjne
Obydwa modele są dostępne na różnych platformach:
- Przytulająca twarz: Tutaj znajdują się wagi modeli podstawowych i instruktorskich
- Sztuczna inteligencja Mistrala: Dostępne jako
mistral-large-2407
(Mistral Duży 2) iopen-mistral-nemo-2407
(Mistral NeMo) - Dostawcy usług w chmurzeDostępne w platformach Vertex AI, Azure AI Studio, Amazon Bedrock i IBM watsonx.ai firmy Google Cloud Platform
Dla deweloperów, którzy chcą wykorzystać te modele, przedstawiamy krótki przykład ładowania i używania Mistral Large 2 z transformatorami 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)
Ten kod demonstruje, jak załadować model, przygotować dane wejściowe w formacie czatu, wygenerować odpowiedź i zdekodować dane wyjściowe.