Connect with us

Mistral 2 i Mistral NeMo: Kompletny przewodnik po najnowszych LLM pochodzących z Paryża

Sztuczna inteligencja

Mistral 2 i Mistral NeMo: Kompletny przewodnik po najnowszych LLM pochodzących z Paryża

mm
Mistral Large 2 and Mistral NeMo

Założona przez absolwentów Google DeepMind i Meta, paryska firma startupowa Mistral AI nieustannie robi furorę w społeczności AI od 2023 roku.

Mistral AI po raz pierwszy zwróciła uwagę świata swoim debiutującym modelem, Mistral 7B, wydanym w 2023 roku. Ten model o 7 miliardach parametrów szybko zyskał uznanie za swoją imponującą wydajność, przewyższając większe modele, takie jak Llama 2 13B w różnych benchmarkach, a nawet rywalizując z Llama 1 34B w wielu metrykach. 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 badaczy 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 oprogramowanie, umieściła Mistral AI jako potężnego gracza w pejzażu AI.

Szybki wzrost Mistral AI w branży jest dalej potwierdzony przez ich niedawny sukces w pozyskaniu funduszy. Firma osiągnęła zdumiewającą wycenę 2 miliardów dolarów po rundzie finansowania prowadzonej przez Andreessen Horowitz. To nastąpiło na fali historycznego rundy seed o wartości 118 milionów dolarów – największej w historii Europy – pokazując ogromną wiarę inwestorów w wizję i możliwości Mistral AI.

Poza postępami technologicznymi, Mistral AI aktywnie uczestniczyła w kształtowaniu polityki AI, zwłaszcza w dyskusjach na temat unijnej ustawy o AI, gdzie opowiadała się za zmniejszeniem regulacji w otwartym oprogramowaniu AI.

Teraz, w 2024 roku, Mistral AI ponownie podniosła poprzeczkę z dwoma przełomowymi modelami: 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 okno kontekstowe
  • 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 badaczy, jak i przedsiębiorstw, które chcą wykorzystać najnowocześniejsze AI.

Mistral NeMo: Nowy mniejszy model

Podczas gdy Mistral Large 2 reprezentuje najlepsze z dużych modeli Mistral AI, Mistral NeMo, wydany w lipcu 2024 roku, przyjmuje odmienny podejście. Opracowany we współpracy z NVIDIA, Mistral NeMo to bardziej kompaktowy model o 12 miliardach parametrów, który nadal oferuje imponujące możliwości:

  • 12 miliardów parametrów
  • 128k kontekst okno
  • Wydajność na poziomie stanu techniki w swojej kategorii wielkości
  • Apache 2.0 licencja do otwartego użytku
  • Świadoma kwantyzacji trening dla wydajnej inferencji

Mistral NeMo jest pozycjonowany jako zamiennik dla systemów, które obecnie używają Mistral 7B, oferując poprawioną 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 pejzażu AI:

  1. 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.
  2. Wielojęzyczna obsługa: 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.
  3. Zaawansowane możliwości programowania: Obydwa modele wykazują wyjątkową biegłość w generowaniu kodu w wielu językach programowania.
  4. Przestrzeganie instrukcji: Zostały wprowadzone znaczące ulepszenia w możliwościach modeli do przestrzegania precyzyjnych instrukcji i prowadzenia rozmów wieloobrotowych.
  5. Wywoływanie funkcji: Natywna obsługa wywoływania funkcji pozwala tym modelom na dynamiczną interakcję z zewnętrznymi narzędziami i usługami.
  6. Rozumowanie i rozwiązywanie problemów: Ulepszona zdolność do rozumowania matematycznego i rozwiązywania złożonych zadań.

Przejdźmy przez niektóre z tych funkcji i zbadajmy, jak one działają w praktyce.

Wyniki benchmarków

Aby zrozumieć prawdziwe możliwości Mistral Large 2 i Mistral NeMo, niezbędne jest spojrzenie na ich wydajność w różnych benchmarkach. Przeanalizujmy niektóre kluczowe metryki:

Wyniki benchmarków Mistral Large 2

Ten 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 zrozumienia i wygenerowania 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.

https://mistral.ai/news/mistral-large-2407/

https://mistral.ai/news/mistral-large-2407/

https://mistral.ai/news/mistral-large-2407/

https://mistral.ai/news/mistral-large-2407/

Wyniki benchmarków Mistral NeMo

Chociaż nie podano konkretnych wyników benchmarków dla Mistral NeMo, opisano go jako oferujący wydajność na poziomie stanu techniki w swojej kategorii wielkości. Model przewyższa inne niedawne modele otwartego oprogramowania, takie jak Gemma 2 9B i Llama 3 8B w różnych zadaniach.

Wielojęzyczna i programistyczna biegłość

Jedną z wyróżniających się cech obu modeli, Mistral Large 2 i Mistral NeMo, jest ich wyjątkowa wielojęzyczna zdolność. 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.

Przykładem może być wygenerowanie tekstu w wielu językach przez Mistral Large 2:

[INST] Generate a short greeting in English, French, German, Spanish, and Japanese. [/INST]

To są krótkie powitania w żądanych językach:

Angielski: Hello! How are you today?
Francuski: Bonjour ! Comment allez-vous aujourd’hui ?
Niemiecki: Hallo! Wie geht es Ihnen heute?
Hiszpański: ¡Hola! ¿Cómo estás hoy?
Japoński: こんにちは!今日はお元気ですか?

[INST]

Teraz, napisz prosty program “Hello, World!” w Pythonie, Javie i JavaScript. [/INST]

Te przykłady pokazują zarówno wielojęzyczną generację tekstu, jak i możliwości programistyczne modelu.

Oba modele są dostępne na różnych platformach, takich jak Hugging Face, platforma Mistral AI oraz główni dostawcy usług chmurowych, tacy jak Google Cloud Platform, Azure AI Studio, Amazon 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 tym, jak wchodzimy w interakcje z modelami 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 określonych celów.

Kluczową funkcją 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, efektywnie rozszerzając ich możliwości poza prostą generację tekstu.

Przykładem może być wywoływanie funkcji 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

# Inicjalizacja tokenu i modelu
mistral_models_path = "path/to/mistral/models" # Upewnij się, że ścieżka jest poprawna
tokenizer = MistralTokenizer.from_file(f"{mistral_models_path}/tokenizer.model.v3")
model = Transformer.from_folder(mistral_models_path)

# Zdefiniuj funkcję do pobierania informacji o pogodzie
weather_function = Function(
name="get_current_weather",
description="Pobierz bieżącą pogodę",
parameters={
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "Miasto i stan, np. San Francisco, CA",
},
"format": {
"type": "string",
"enum": ["celsius", "fahrenheit"],
"description": "Jednostka temperatury do użycia. Wnioskuj to z lokalizacji użytkownika.",
},
},
"required": ["location", "format"],
},
)

# Utwórz żądanie uzupełnienia czatu z funkcją
completion_request = ChatCompletionRequest(
tools=[Tool(function=weather_function)],
messages=[
UserMessage(content="Jaka jest pogoda dzisiaj w Paryżu?"),
],
)

# Zakoduj wejście
input_ids = tokenizer.apply_chat_template(completion_request, return_tensors="pt").to(device)

# Wygeneruj odpowiedź
output_ids = model.generate(input_ids, max_new_tokens=256, do_sample=True)

# Zdekoduj i wyświetl odpowiedź
response = tokenizer.decode(output_ids[0], skip_special_tokens=True)
print(response)

W tym przykładzie definiujemy funkcję do pobierania informacji o pogodzie i uwzględniamy ją w naszym żądaniu uzupełnienia czatu. Model może następnie użyć tej funkcji do pobrania danych pogodowych w czasie rzeczywistym, demonstrując, jak może on wchodzić w interakcje z zewnętrznymi systemami, aby zapewnić bardziej dokładne i aktualne informacje.

Tekken: Bardziej wydajny tokenizator

Mistral NeMo wprowadza nowy tokenizator o nazwie Tekken, który oparty jest 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 ulepszona efektywność tokenizacji przekłada się na lepszą wydajność modelu, zwłaszcza przy przetwarzaniu wielojęzycznym i kodem źródłowym. Pozwala to modelowi przetwarzać więcej informacji w tym samym oknie kontekstowym, 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 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ępny jako mistral-large-2407 (Mistral Large 2) i open-mistral-nemo-2407 (Mistral NeMo)
  • Dostawcy usług chmurowych: Dostępny na Google Cloud Platform’s Vertex AI, Azure AI Studio, Amazon Bedrock i IBM watsonx.ai
https://mistral.ai/news/mistral-large-2407/

https://mistral.ai/news/mistral-large-2407/

Dla deweloperów, którzy chcą używać tych modeli, oto szybki przykład, jak załadować i używać Mistral Large 2 z Hugging Face transformers:

from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "mistralai/Mistral-Large-Instruct-2407"
device = "cuda" # Użyj GPU, jeśli dostępne

# Załaduj model i tokenizator
model = AutoModelForCausalLM.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)

# Przenieś model do odpowiedniej jednostki
model.to(device)

# Przygotuj wejście
messages = [
{"role": "system", "content": "Jesteś pomocnym asystentem AI."},
{"role": "user", "content": "Wyjaśnij pojęcie sieci neuronowych w prosty sposób."},
]

# Zakoduj wejście
input_ids = tokenizer.apply_chat_template(messages, return_tensors="pt").to(device)

# Wygeneruj odpowiedź
output_ids = model.generate(input_ids, max_new_tokens=500, do_sample=True)

# Zdekoduj i wyświetl odpowiedź
response = tokenizer.decode(output_ids[0], skip_special_tokens=True)
print(response)

Ten kod pokazuje, jak załadować model, przygotować wejście w formacie czatu, wygenerować odpowiedź i zdekodować wynik.

Spędziłem ostatnie pięć lat, zanurzając się w fascynującym świecie Machine Learning i Deep Learning. Moja pasja i ekspertyza doprowadziły mnie do udziału w ponad 50 różnych projektach inżynierii oprogramowania, ze szczególnym uwzględnieniem AI/ML. Moja nieustanna ciekawość również skierowała mnie w stronę Natural Language Processing, dziedziny, którą chcę bardziej zbadać.