Qwen2.5-Omni-7B: Küçük Ama Güçlü

Yapay zeka hızla gelişiyor. Qwen ekibinin geliştirdiği Qwen2.5-Omni-7B modeli, metin, görsel, ses gibi çoklu girdileri işleyerek yeni bir çağ başlatıyor.

Efe Demir

Efe Demir

5 June 2025

Qwen2.5-Omni-7B: Küçük Ama Güçlü

Yapay zeka alanı hızla gelişiyor, makinelerin algılayabildiği, anlayabildiği ve üretebildiği şeylerin sınırlarını zorluyor. Bu evrimdeki önemli bir sıçrama, Qwen2.5-Omni-7B modeli'nin, Qwen ekibi tarafından geliştirilen amiral gemisi bir uçtan uca çok modlu modelin tanıtımıyla işaretleniyor. Bu model, metin merkezli etkileşimlerin ötesine geçerek gerçek anlamda çok modlu bir deneyimi benimseyen bir paradigma değişikliğini temsil ediyor. Metin, resim, ses ve video gibi çeşitli girdileri sorunsuz bir şekilde işlerken, aynı anda hem metinsel hem de doğal konuşma formatlarında, genellikle gerçek zamanlı akış şeklinde yanıtlar üretiyor. Bu makale, çığır açan Qwen2.5-Omni-7B modeli'nin teknik inceliklerine, performans ölçütlerine ve pratik uygulamalarına iniyor.

💡
Güzel API Dokümantasyonu oluşturan harika bir API Test aracı mı istiyorsunuz?

Geliştirici Ekibinizin maksimum verimlilikle birlikte çalışması için entegre, Hepsi Bir Arada bir platform mu istiyorsunuz?

Apidog tüm taleplerinizi karşılıyor ve Postman'in yerini çok daha uygun bir fiyata alıyor!
button

Qwen2.5-Omni-7B Nedir? Ve Neden Bu Kadar İyi?

Temelinde, Qwen2.5-Omni-7B modeli, "Thinker-Talker" olarak adlandırılan yeni bir uçtan uca mimari kullanır. Bu tasarım felsefesi, birden fazla modalite genelinde hem kapsamlı algılama hem de etkileyici üretim yapabilen birleşik bir sistem oluşturmayı amaçlamaktadır.

"Thinker" bileşeni, çok modlu girdilerin zengin dokusunu işlemekten ve anlamaktan sorumludur. Farklı veri türleri için özel kodlayıcılar entegre eder:

Mimari içindeki önemli bir yenilik, Time-aligned Multimodal RoPE (TMRoPE)'dir. Rotary Position Embedding (RoPE) gibi standart konumsal kodlamalar, metin gibi sıralı verilerde mükemmeldir, ancak özellikle görsel karelerin ve ses akışlarının senkronize edilmesi gereken video gibi çok modlu senaryolar için uyarlanmaya ihtiyaç duyar. TMRoPE, video karelerinin zaman damgalarını karşılık gelen ses segmentleriyle hizalayarak bunu ele alır. Bu senkronizasyon, modelin işitsel-görsel olayların tutarlı bir zamansal anlayışını oluşturmasını sağlar ve "Videoda nesne düştüğünde hangi ses meydana gelir?" gibi soruları yanıtlamasını sağlar.

"Talker" bileşeni, çıktıların oluşturulmasını yönetir. Şunlardan oluşur:

Uçtan uca doğası, algılamadan üretime kadar tüm sürecin tek, birleşik bir model içinde gerçekleştiği, gecikmeyi en aza indirdiği ve yanıtların giriş tamamen işlenmeden önce başlayabileceği kesintisiz, akış etkileşimlerine izin verdiği anlamına gelir.

Peki Neden Qwen2.5-Omni-7B Bu Kadar Özel?

Qwen2.5-Omni-7B modeli, kendisini birkaç temel teknik özellikle ayırır:

İşte Qwen2.5-Omni için ölçütler

Nicel değerlendirmeler, Qwen2.5-Omni-7B modeli'nin yeteneklerinin altını çizmektedir. Çok çeşitli ölçütlerde yeterlilik göstermektedir:

Çok Modluluktan Metne: OmniBench'te, 7B modeli %56,13'lük dikkate değer bir ortalama puan elde ederek, Gemini-1.5-Pro (%42,91) ve birleşik görüntü, ses ve metin muhakemesi içeren görevlerde uzmanlaşmış çok modlu modelleri önemli ölçüde geride bırakıyor.

Sesten Metne:

Görüntüden Metne: Qwen2.5-Omni-7B modeli, MMMU (59.2 vs 58.6), MMBench-V1.1-EN (81.8 vs 82.6), MMStar (64.0 vs 63.9) ve TextVQA (84.4 vs 84.9) gibi görsel-dil ölçütlerinde özel Qwen2.5-VL-7B modeli ile karşılaştırılabilir performans gösterir. Ayrıca RefCOCO/+/g gibi temel görevlerde de mükemmeldir.

Videodan (ses olmadan) Metne: Video-MME (w/o sub) ve MVBench gibi ölçütlerde sırasıyla 64.3 ve 70.3 puanları elde ederek, bu özel testlerde eşlik eden ses ipuçları olmasa bile güçlü video anlayışı sergiler.

Sıfır atış TTS: SEED-TTS-eval üzerinde değerlendirilen, RL ayarlı sürüm, düşük WER (zh/en/hard için 1.42/2.32/6.54) ve yüksek konuşmacı benzerliği (0.754/0.641/0.752) göstererek, yüksek kaliteli, tutarlı ses üretimi olduğunu gösterir.

Metinden Metne: Öncelikli olarak çok modlu olmasına rağmen, yalnızca metin yetenekleri güçlü kalır. MMLU-redux'ta 71.0, GSM8K'da 88.7 ve HumanEval'da 78.7 puan alarak, genellikle uzmanlaşmış Qwen2.5-7B metin modelinin gerisinde kalır, ancak Llama3.1-8B gibi diğer 7-8B modellerine karşı iyi karşılaştırılır.

Tamam, anlıyorum. Önceki format için özür dilerim. Kod örneklerini daha doğal bir şekilde akıcı bir makale formatına entegre ederek, uygulama detaylarından başlayarak bölümü yeniden yazacağım.


Qwen2.5-Omni-7B Modelini Çalıştırma: Pratik Uygulama

Teorik yeteneklerden pratik uygulamaya geçiş, Qwen2.5-Omni-7B modeli ile programlı olarak nasıl etkileşim kurulacağını anlamayı gerektirir. Bunun için birincil araçlar, özel Qwen entegrasyonları ile geliştirilmiş Hugging Face transformers kütüphanesi ve akıcı çok modlu girdi işleme için yardımcı qwen-omni-utils paketidir.

Yolculuk, ortamı kurmakla başlar. transformers, accelerate (verimli çoklu GPU ve karma hassasiyet işleme için), torch, soundfile (ses G/Ç için) ve çok önemli olan qwen-omni-utils dahil olmak üzere temel kütüphanelere sahip olduğunuzdan emin olun. Qwen2.5-Omni mimari desteğini içeren transformers'ın belirli önizleme sürümünü yüklemeniz ve daha hızlı video işleme için qwen-omni-utils için [decord] ekstrasını kullanmanız şiddetle tavsiye edilir:

# Önerilen kurulum
pip install transformers accelerate torch soundfile qwen-omni-utils[decord] -U
# Qwen2.5-Omni desteği ile belirli transformers sürümünü yükleyin
pip install git+https://github.com/huggingface/transformers@v4.51.3-Qwen2.5-Omni-preview

Ortam hazır olduğunda, modeli ve ilgili işlemcisini yüklemek bir sonraki adımdır. Özellikle VRAM olmak üzere, gereken önemli hesaplama kaynaklarını yönetmek için, bfloat16 hassasiyetini (torch_dtype=torch.bfloat16 veya "auto") kullanmak ve Flash Attention 2'yi etkinleştirmek (attn_implementation="flash_attention_2") şiddetle tavsiye edilir. Flash Attention 2, dikkat mekanizmasını optimize ederek, uyumlu donanımlarda (NVIDIA Ampere mimarisi veya daha yenisi) bellek ayak izini azaltır ve hızı artırır. device_map="auto" argümanı, model katmanlarını mevcut GPU'lar arasında akıllıca dağıtır.

import torch
import soundfile as sf
from transformers import Qwen2_5OmniForConditionalGeneration, Qwen2_5OmniProcessor
from qwen_omni_utils import process_mm_info

# Model tanımlayıcısını tanımlayın ve bileşenleri yükleyin
model_path = "Qwen/Qwen2.5-Omni-7B"

print("Model ve işlemci yükleniyor...")
model = Qwen2_5OmniForConditionalGeneration.from_pretrained(
    model_path,
    torch_dtype=torch.bfloat16, # Bellek verimliliği için BF16 kullanın
    device_map="auto",         # Modeli mevcut GPU'lar arasında dağıtın
    attn_implementation="flash_attention_2" # Flash Attention 2'yi etkinleştirin
)
processor = Qwen2_5OmniProcessor.from_pretrained(model_path)
print("Model ve işlemci başarıyla yüklendi.")

Model yüklendikten sonra, sağlanan yemek kitaplarını yansıtan örnekler aracılığıyla yeteneklerini keşfedebiliriz.

Qwen2.5-Omni-7B Modeli ile Evrensel Ses Anlama

cookbooks/universal_audio_understanding.ipynb, modelin çeşitli ses görevlerini ele alma konusundaki yeteneğini gösterir. İlk olarak Otomatik Konuşma Tanıma (ASR)'yi ele alalım.

Girdinin bir konuşma listesi olarak yapılandırılması gerekir. Bir sistem istemi (ASR için kullanılmasa bile potansiyel ses çıkışını etkinleştirmek için gereklidir) ve ses girdisini (bir URL veya yerel yol aracılığıyla belirtilir) ve modeli yönlendiren metin istemini içeren bir kullanıcı mesajı sağlıyoruz.

# Örnek bir ses URL'si kullanarak ASR için konuşma hazırlayın
audio_url_asr = "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen2.5-Omni/hello.wav"

conversation_asr = [
    {
        "role": "system",
        "content": [{"type": "text", "text": "Siz Qwen'siniz, sanal bir insansınız..."}] # Standart sistem istemi
    },
    {
        "role": "user",
        "content": [
            {"type": "audio", "audio": audio_url_asr},
            {"type": "text", "text": "Lütfen bu ses için transkript sağlayın."}
        ]
    }
]

# Çok modlu bilgileri işleyin. Not: Burada use_audio_in_video False'dur.
USE_AUDIO_IN_VIDEO_FLAG = False
print("ASR girdisi işleniyor...")
text_prompt_asr = processor.apply_chat_template(conversation_asr, add_generation_prompt=True, tokenize=False)
audios_asr, images_asr, videos_asr = process_mm_info(conversation_asr, use_audio_in_video=USE_AUDIO_IN_VIDEO_FLAG)

# İşlemciyi kullanarak son model girdilerini hazırlayın
inputs_asr = processor(
    text=text_prompt_asr,
    audio=audios_asr, images=images_asr, videos=videos_asr, # İşlenmiş modaliteleri geçirin
    return_tensors="pt", padding=True,
    use_audio_in_video=USE_AUDIO_IN_VIDEO_FLAG # Tutarlı bayrak ayarı
)
# Girdileri doğru cihaza ve veri türüne taşıyın
inputs_asr = inputs_asr.to(model.device).to(model.dtype)
print("ASR girdisi oluşturulmaya hazır.")

process_mm_info yardımcı programı, ses URL'sinin yüklenmesini ve ön işlenmesini yönetir. Daha sonra processor, tokenleştirilmiş metin istemini işlenmiş ses özellikleri ile birleştirerek girdi tensörlerini oluşturur. use_audio_in_video bayrağının hiçbir video dahil olmadığı için tutarlı bir şekilde False olarak ayarlandığına dikkat edin.

Transkripsiyonu oluşturmak için model.generate yöntemini çağırırız. Daha hızlı ASR için return_audio=False ayarlarız.

print("ASR transkripsiyonu oluşturuluyor...")
with torch.no_grad(): # Çıkarım için gradyan hesaplamalarını devre dışı bırakın
    text_ids_asr = model.generate(
        **inputs_asr,
        use_audio_in_video=USE_AUDIO_IN_VIDEO_FLAG,
        return_audio=False, # Yalnızca metin çıktısına ihtiyaç var
        max_new_tokens=512  # Çıktı uzunluğunu sınırlayın
    )

# Oluşturulan token kimliklerini tekrar metne kodlayın
transcription = processor.batch_decode(text_ids_asr, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]

print("\n--- Qwen2.5-Omni-7B Modeli: ASR Sonucu ---")
print(f"Ses Kaynağı: {audio_url_asr}")
print(f"Oluşturulan Transkripsiyon: {transcription}")

Konuşmanın ötesinde, model diğer sesleri analiz edebilir. Öksürük gibi bir ses olayını tanımlamayı deneyelim. İşlem benzerdir, ses kaynağını değiştirir ve metin istemini ayarlarız.

# Ses analizi için konuşma hazırlayın
sound_url = "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen2.5-Omni/cough.wav"

conversation_sound = [
    {"role": "system", "content": [{"type": "text", "text": "Siz Qwen'siniz, sanal bir insansınız..."}]},
    {
        "role": "user",
        "content": [
            {"type": "audio", "audio": sound_url},
            {"type": "text", "text": "Bu ses klibinde hangi özel ses olayı meydana geliyor?"}
        ]
    }
]

# Girdiyi işleyin (ASR ile benzer adımlar)
print("\nSes analizi girdisi işleniyor...")
text_prompt_sound = processor.apply_chat_template(conversation_sound, add_generation_prompt=True, tokenize=False)
audios_sound, _, _ = process_mm_info(conversation_sound, use_audio_in_video=False) # Görüntü/video yok
inputs_sound = processor(text=text_prompt_sound, audio=audios_sound, return_tensors="pt", padding=True, use_audio_in_video=False)
inputs_sound = inputs_sound.to(model.device).to(model.dtype)
print("Ses analizi girdisi hazır.")

# Ses analizi oluştur (yalnızca metin)
print("Ses analizi oluşturuluyor...")
with torch.no_grad():
    text_ids_sound = model.generate(**inputs_sound, return_audio=False, max_new_tokens=128)

# Sonucu kodlayın ve görüntüleyin
analysis_text = processor.batch_decode(text_ids_sound, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
print("\n--- Qwen2.5-Omni-7B Modeli: Ses Analizi Sonucu ---")
print(f"Ses Kaynağı: {sound_url}")
print(f"Ses Analizi: {analysis_text}")

Qwen2.5-Omni-7B Modeli ile Video Bilgisi Çıkarımı

cookbooks/video_information_extracting.ipynb yemek kitabı, Qwen2.5-Omni-7B modeli'nin entegre işitsel-görsel işlemesinin parladığı bir görev olan video akışlarından içgörü çıkarmaya odaklanmaktadır.

Burada, önemli fark genellikle hem görsel kareleri hem de videonun ses parçasını işlemenin gerekliliğidir. Bu, use_audio_in_video parametresi tarafından kontrol edilir ve hem process_mm_info hem de processor çağrısı sırasında True olarak ayarlanmalıdır.

# Örnek bir video URL'si kullanarak video analizi için konuşma hazırlayın
video_url = "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen2.5-Omni/draw.mp4"

conversation_video = [
    {"role": "system", "content": [{"type": "text", "text": "Siz Qwen'siniz, sanal bir insansınız..."}]},
    {
        "role": "user",
        "content": [
            {"type": "video", "video": video_url},
            # Entegre işitsel-görsel anlayış gerektiren istem
            {"type": "text", "text": "Bu videodaki eylemleri açıklayın ve mevcut belirgin seslerden bahsedin."}
        ]
    }
]

# Çok modlu bilgileri işleyin, kritik olarak videodan sesi etkinleştirin
USE_AUDIO_IN_VIDEO_FLAG = True # Ses parçası işlemesini etkinleştirin
print("\nVideo analizi girdisi işleniyor (ses ile)...")
text_prompt_video = processor.apply_chat_template(conversation_video, add_generation_prompt=True, tokenize=False)

# process_mm_info video yüklemeyi yönetir (yüklüyse decord kullanır)
audios_video, images_video, videos_video = process_mm_info(conversation_video, use_audio_in_video=USE_AUDIO_IN_VIDEO_FLAG)

# Son model girdilerini hazırlayın
inputs_video = processor(
    text=text_prompt_video,
    audio=audios_video, images=images_video, videos=videos_video,
    return_tensors="pt", padding=True,
    use_audio_in_video=USE_AUDIO_IN_VIDEO_FLAG # BURADA da True OLMALI
)
inputs_video = inputs_video.to(model.device).to(model.dtype)
print("Video girdisi oluşturulmaya hazır.")

Video analizi için yanıt oluştururken, hem metinsel açıklamayı hem de sentezlenmiş konuşma çıktısını return_audio=True kullanarak ve bir speaker belirterek talep edebiliriz.

# Video analizi oluştur (hem metin hem de ses çıktısı talep etme)
print("Video analizi oluşturuluyor (metin ve ses)...")
with torch.no_grad():
    text_ids_video, audio_output_video = model.generate(
        **inputs_video,
        use_audio_in_video=USE_AUDIO_IN_VIDEO_FLAG, # BURADA da True OLMALI
        return_audio=True,         # Konuşma sentezi talep etme
        speaker="Ethan",           # Bir ses seçin (örneğin, Ethan)
        max_new_tokens=512
    )

# Yanıtın metin bölümünü kodlayın
video_analysis_text = processor.batch_decode(text_ids_video, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]

print("\n--- Qwen2.5-Omni-7B Modeli: Video Analizi Sonucu ---")
print(f"Video Kaynağı: {video_url}")
print(f"Oluşturulan Metin Analizi: {video_analysis_text}")

# Oluşturulan ses yanıtını varsa kaydedin
if audio_output_video is not None:
    output_audio_path = "video_analysis_response.wav"
    sf.write(
        output_audio_path,
        audio_output_video.reshape(-1).detach().cpu().numpy(), # Yeniden şekillendirin ve CPU'ya taşıyın
        samplerate=24000, # Qwen Omni 24kHz kullanır
    )
    print(f"Oluşturulan ses yanıtı şuraya kaydedildi: {output_audio_path}")
else:
    print("Ses yanıtı oluşturulmadı (sistem istemini veya bayrakları kontrol edin).")

Bu ayrıntılı örnekler, çeşitli çok modlu görevler için Qwen2.5-Omni-7B modeli ile etkileşim kurmanın temel iş akışını göstermektedir. Girdi konuşmasını dikkatlice yapılandırarak, sağlanan yardımcı programları kullanarak ve use_audio_in_video ve return_audio gibi parametreleri doğru bir şekilde ayarlayarak, geliştiriciler bu gelişmiş modelin kapsamlı algısal ve üretken yeteneklerinden yararlanabilirler. Daha uzun videolar gibi karmaşık girdileri işlemek için BF16 hassasiyeti ve Flash Attention 2 gibi teknikler aracılığıyla GPU kaynaklarını yönetmenin genellikle gerekli olduğunu unutmayın.

Sonuç

Qwen2.5-Omni-7B modeli, çok modlu yapay zekada önemli bir ilerlemeyi temsil etmektedir. Uçtan uca mimarisi, TMRoPE gibi yenilikçi özellikleri, çeşitli görevlerdeki güçlü ölçüt performansı ve gerçek zamanlı etkileşim yetenekleri yeni bir standart belirliyor. Metin, resim, ses ve video için algılamayı ve üretimi sorunsuz bir şekilde entegre ederek, sofistike sanal asistanlardan içerik analiz araçlarına, sürükleyici eğitim deneyimlerinden erişilebilirlik çözümlerine kadar daha zengin, daha doğal ve daha yetenekli yapay zeka uygulamaları için olanakların kapılarını açıyor. Etrafındaki ekosistem olgunlaştıkça, Qwen2.5-Omni-7B modeli, bir sonraki akıllı sistemler dalgasını yönlendiren bir köşe taşı teknolojisi olmaya hazırlanıyor.

💡
Güzel API Dokümantasyonu oluşturan harika bir API Test aracı mı istiyorsunuz?

Geliştirici Ekibinizin maksimum verimlilikle birlikte çalışması için entegre, Hepsi Bir Arada bir platform mu istiyorsunuz?

Apidog tüm taleplerinizi karşılıyor ve Postman'in yerini çok daha uygun bir fiyata alıyor!
button

Explore more

Fathom-R1-14B: Hindistan'dan Gelişmiş Yapay Zeka Muhakeme Modeli

Fathom-R1-14B: Hindistan'dan Gelişmiş Yapay Zeka Muhakeme Modeli

Yapay zeka hızla gelişiyor. FractalAIResearch/Fathom-R1-14B, 14.8 milyar parametreyle matematik ve genel akıl yürütmede başarılı.

5 June 2025

Mistral Code: İşletmeler için En Özelleştirilebilir Yapay Zeka Destekli Kodlama Asistanı

Mistral Code: İşletmeler için En Özelleştirilebilir Yapay Zeka Destekli Kodlama Asistanı

Mistral Code'u keşfedin: Kurumsal kullanıma özel, en özelleştirilebilir yapay zeka destekli kodlama asistanı.

5 June 2025

Claude Code'un 2025'te Yapay Zeka Kodlamasını Nasıl Dönüştürdüğü

Claude Code'un 2025'te Yapay Zeka Kodlamasını Nasıl Dönüştürdüğü

Claude Code, 2025'te yapay zeka destekli kodlamayı nasıl devrimleştiriyor? Özelliklerini, kullanımını ve Windsurf kısıtlamalarından sonra neden popüler olduğunu öğrenin. Geliştiriciler için okunması gereken!

5 June 2025

API Tasarım-Öncelikli Yaklaşımı Apidog'da Uygulayın

API'leri oluşturmanın ve kullanmanın daha kolay yolunu keşfedin