Kurs
Mistral AI'nin Codestral Mamba'sı, özellikle kod üretimi için tasarlanmış özel bir dil modelidir.
geleneksel Transformer tabanlı modellere kıyasla, Mamba durum-uzayı modelini (SSM) kullanır; bu da uzun kod dizilerini yönetme ve verimliliği koruma konusunda avantajlar sunar.
Bu yazıda, bu mimariler arasındaki temel farkları inceleyecek ve Codestral Mamba ile çalışmaya başlamanız için size yol göstereceğiz.
Yapay Zeka Uygulamaları Geliştirin
Transformers vs. Mamba: Farkı Anlamak
Codestral Mamba'nın neden öne çıktığını anlamak için, temelindeki Mamba durum-uzayı modelini (SSM) geleneksel Transformer mimarisiyle karşılaştıralım.
Transformers
GPT-4o gibi Transformer modelleri, girdinin farklı kısımlarına aynı anda odaklanarak karmaşık dil görevlerini ele almak için öz-dikkat mekanizmasını kullanır.
Ancak büyük bir sorunları vardır: kuadratik karmaşıklık. Girdi boyutu büyüdükçe, hesaplama maliyeti ve bellek kullanımı katlanarak artar; bu da çok uzun dizilerde verimsizliğe yol açar.
Mamba
Durum Uzayı Modellerine (SSM) dayanan Mamba modelleri, bu kuadratik darboğazı aşarak 1 milyon tokene kadar uzun dizileri yönetmede çok daha başarılıdır. Transformer'lara kıyasla beş kata kadar daha hızlı çalışabilirler.
Mamba, Transformer'larla benzer performans gösterir ve uzun dizilerde daha iyi ölçeklenir. Yaratıcıları Albert Gu ve Tri Dao'ya göre Mamba, hızlı çıkarım ve doğrusal ölçeklenme sunar; sıklıkla aynı boyuttaki Transformer'ları geride bırakır ve iki kat büyük olanlarla başa baş performans sergiler.

Neden kod için Mamba?
Mamba'nın mimarisi, uzun diziler boyunca bağlamı korumanın önemli olduğu kod üretimi için oldukça uygundur. Daha uzun bağlamlarda yavaşlayan ve bellek sorunları yaşayan Transformer'ların aksine, Mamba'nın doğrusal zaman karmaşıklığı ve sonsuz bağlam uzunluklarını ele alabilme yeteneği, büyük kod tabanlarında hızlı ve güvenilir performans sağlar.
Transformer'lar, dikkat mekanizmalarındaki kuadratik karmaşıklıktan muzdariptir. Her bir belirteç, tahmin sırasında önceki tüm belirteçlere bakar; bu da yüksek hesaplama ve bellek maliyetlerine yol açar. Bağlam boyutu büyüdükçe eğitim ve yeni belirteç üretimi giderek yavaşlar ve sıklıkla bellek taşması hatalarına neden olur.
Mamba, verimli belirteç iletişimi için bir SSM kullanarak bu sorunları çözer ve Transformer'lardaki kuadratik karmaşıklıktan kaçınır. Tasarımı, uzun dizileri verimli biçimde işlemesine olanak tanır; bu da geniş bağlam yönetimi gerektiren uygulamalar için güçlü bir seçenek yapar.
Codestral Mamba Karşılaştırmaları
Codestral Mamba (7B), kodla ilgili görevlerde parlıyor ve çoklu programlama dillerinde kod üretim yeteneklerini ölçen HumanEval kıyaslamasında diğer 7B modelleri tutarlı şekilde geride bırakıyor.

Kaynak: Mistral AI
Özellikle Python için HumanEval'de %75,0 doğruluk elde ederek CodeGemma-1.1 7B (%61,0), CodeLlama 7B (%31,1) ve DeepSeek v1.5 7B (%65,9) modellerini geride bırakıyor. Hatta daha büyük Codestral (22B) modelini %81,1 doğrulukla yakın takip ediyor.
Diğer HumanEval dillerinde de Codestral Mamba güçlü performansını sürdürüyor. Bash betik puanı diğer kıyaslamalara göre daha düşük olsa da, kendi sınıfında rekabetçi kalıyor.
Görevler arası kod üretimi için CruxE kıyaslamasında Codestral Mamba %57,8 gibi sağlam bir puan alarak CodeGemma-1.1 7B'yi aşıyor ve CodeLlama 34B ile başa baş geliyor.
Bu kıyaslama sonuçları, özellikle bazı rakiplerle karşılaştırıldığında nispeten küçük boyutuna rağmen, Codestral Mamba'nın kod üretimi ve anlama görevlerindeki etkinliğini vurguluyor.
Daha geniş bir model ve görev yelpazesiyle yapılacak ek testler ve karşılaştırmalar faydalı olsa da, ilk sonuçlar Codestral Mamba'yı geliştiriciler için umut vadeden bir açık kaynak alternatif olarak konumlandırıyor.
Codestral Mamba'nın Kurulumu
Codestral Mamba ile başlamanız için gereken adımları gözden geçirelim.
Kurulum
Codestral Mamba'yı kurmak için aşağıdaki komutu çalıştırın:
pip install codestral_mamba
API anahtarı alma
Codestral API'yi kullanmak için bir API anahtarına ihtiyacınız olacak. İşte nasıl alacağınız:
- Mistral AI kayıt sayfasına gidin ve bir hesap oluşturun.
- api.mistral.ai için API Keys sekmesine gidin. API anahtarınızı oluşturmak için Create new key seçeneğine tıklayın.

API anahtarınızı aşağıdaki komutla ortam değişkenlerinize ekleyin:
export MISTRAL_API_KEY='your_api_key'
Codestral Mamba'nın Uygulamaları
Artık Codestral Mamba'yı kurduğumuza göre, birkaç örneğe bakalım.
Kod tamamlama
Eksik bir kod parçanız varsa, tamamlamak için Codestral Mamba'yı kullanabilirsiniz. İşte bir örnek:
import os
from mistralai.client import MistralClient
from mistralai.models.chat_completion import ChatMessage
api_key = os.environ["MISTRAL_API_KEY"]
client = MistralClient(api_key=api_key)
model = "codestral-mamba-latest"
messages = [
ChatMessage(role="user", content="Please complete the following function: \\n def calculate_area_of_square(side_length):\\n # missing part here")
]
chat_response = client.chat(
model=model,
messages=messages
)
print(chat_response.choices[0].message.content)
The function calculate_area_of_square(side_length) is designed to calculate the area of a square given its side length.
The area of a square can be calculated by squaring the length of one of its sides. Therefore, the function simply needs to multiply the side length by itself to get the area.
Here is how you can complete the function:
def calculate_area_of_square(side_length):
area = side_length * side_length
return area
You can also write this function in a more concise way using the exponentiation operator **:
def calculate_area_of_square(side_length):
return side_length ** 2
Both of these functions will correctly calculate and return the area of a square given its side length.
Fonksiyon üretimi
Codestral Mamba, bir açıklamadan fonksiyon da üretebilir. Örneğin, şu açıklama için alınan çıktıyı aşağıda görebilirsiniz: “Lütfen bir sayının faktöriyelini döndüren bir Python fonksiyonu yazın.”
import os
from mistralai.client import MistralClient
from mistralai.models.chat_completion import ChatMessage
client = MistralClient(api_key=api_key)
model = "codestral-mamba-latest"
messages = [
ChatMessage(role="user", content="Please write me a Python function that returns the factorial of a number")
]
chat_response = client.chat(
model=model,
messages=messages
)
print(chat_response.choices[0].message.content)
Sure, here's a simple Python function that calculates the factorial of a number:
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
This function uses recursion, a method in which a function calls itself. The base case is when n is 0, in which case the function returns 1. For any other value, the function returns n multiplied by the factorial of n-1.
Yeniden düzenleme (refactoring)
Son olarak, mevcut kod tabanınızı iyileştirmek ve yeniden düzenlemek için Codestral Mamba'yı aşağıdaki gibi kullanabilirsiniz:
import os
from mistralai.client import MistralClient
from mistralai.models.chat_completion import ChatMessage
api_key = os.environ["MISTRAL_API_KEY"]
client = MistralClient(api_key=api_key)
model = "codestral-mamba-latest"
messages = [
ChatMessage(role="user", content="""Please improve / refactor the following Python function: \\n```python
def fibonacci(n: int) -> int:
if n <= 0:
return "Input should be a positive integer."
elif n == 1:
return 0
elif n == 2:
return 1
else:
a, b = 0, 1
for _ in range(2, n):
a, b = b, a + b
return b
```""")
]
chat_response = client.chat(
model=model,
messages=messages
)
print(chat_response.choices[0].message.content)
The provided Python function is already quite well-written and efficient. However, it could be improved by adding some type hints for clarity and to provide better documentation. Here's a refactored version of the function:
def fibonacci(n: int) -> int:
"""
Calculates the nth Fibonacci number.
Args:
n (int): The position of the Fibonacci number to be calculated.
Returns:
int: The nth Fibonacci number.
"""
if not isinstance(n, int) or n <= 0:
raise ValueError("Input should be a positive integer.")
if n <= 2:
return n - 1
else:
a, b = 0, 1
for _ in range(2, n):
a, b = b, a + b
return b
I've added a docstring to the function to explain what it does. I've also added some input validation to check that the input is a positive integer and to raise a meaningful error if it's not. I've also adjusted the base cases to return `n - 1` for `n <= 2` to make the function more concise and easier to understand.
Codestral Mamba'nın Ek Avantajları
Codestral Mamba'yı cazip bir seçenek yapan çeşitli başka avantajlar da vardır.
Çok dilli destek
Codestral Mamba 80'in üzerinde programlama dilini destekler. Bu da Python, JavaScript veya desteklenen diğer dillerde çalışan geliştiriciler için esnek bir araç olmasını sağlar.
Geniş bağlam penceresi
256.000 tokene kadar işleyebilme yeteneği sayesinde Codestral Mamba daha büyük kod tabanlarını yönetebilir ve birden fazla dosya arasında bağlamı koruyabilir.
Bu, kapsamlı kod ve bağımlılıkların takibinin kritik olduğu karmaşık projeler için özellikle faydalıdır.
Açık kaynak avantajları
Codestral Mamba açık kaynaktır ve Apache 2.0 lisansı altında sunulmaktadır. Bu, kodunun herkes tarafından görüntülenebilir, değiştirilebilir ve katkıda bulunulabilir olduğu anlamına gelir.
Açık kaynak doğası topluluk işbirliğini teşvik eder; geliştiricilerin modeli çeşitli ihtiyaçlara göre iyileştirmesine ve uyarlamasına olanak tanır.
Codestral Mamba'nın İnce Ayarı ve İleri Düzey Kullanım
Codestral Mamba, kutudan çıktığı haliyle etkileyici yetenekler sunsa da, performansını daha da artırmak ve ihtiyaçlarınıza göre uyarlamak için ince ayar ve ileri istem teknikleri kullanabilirsiniz.
Özel verilerle ince ayar
Codestral Mamba, kendi verilerinizle ince ayar yapılarak belirli ihtiyaçlarınıza daha iyi uyacak şekilde özelleştirilebilir. Bu süreç, modeli alanınıza veya kod tabanınıza özgü kod ve bilgiler üzerinde eğitmeyi içerir.
İnce ayar, modelin performansını artırarak benzersiz uygulamalarınız için daha etkili hale getirir ve kod üretiminde doğruluğunu ve ilgililiğini yükseltir.
İleri düzey istemler
Daha karmaşık görevleri ele almak için Codestral Mamba ile gelişmiş istemleme tekniklerini kullanabilirsiniz. Bu yöntemlerden biri, modeli adım adım akıl yürütme sürecinde yönlendirmeyi içeren chain-of-thought prompting tekniğidir. Bu yaklaşım, modelin gelişmiş akıl yürütme yeteneklerinden yararlanarak karmaşık sorguları ele almasına ve daha ayrıntılı, düşünülmüş yanıtlar üretmesine yardımcı olur.
Sonuç
Mamba durum-uzayı modelinden yararlanan Codestral Mamba, uzun kod dizilerini ele almada geleneksel Transformer modellerinin sınırlamalarını giderir.
Açık kaynak yapısı, çok dilli desteği ve büyük bağlamları işleyebilme yeteneğiyle geliştiriciler için değerli bir alternatif konumundadır.
Mistral’ın LLM paketleri hakkında daha fazla bilgi edinmek isterseniz, şu blog yazılarını öneririm:
Ryan, LLM'ler kullanarak yapay zeka uygulamaları geliştirme konusunda uzmanlaşmış kıdemli bir veri bilimcisidir. Imperial College London'da Doğal Dil İşleme ve Bilgi Grafiklerinde doktora adayıdır ve aynı kurumda Bilgisayar Bilimleri alanında yüksek lisansını tamamlamıştır. Veri bilimi dışında, haftalık Substack bülteni The Limitless Playbook'u yayımlar; burada dünyanın önde gelen düşünürlerinden uygulanabilir tek bir fikri paylaşır ve zaman zaman temel yapay zeka kavramları hakkında yazar.

