Phi-4-multimodal, Microsoft tarafından geliştirilen hafif bir çok modlu temel modelidir. Microsoft’un küçük dil modelleri (SLM) ailesinin bir parçasıdır.
Bu eğitimde, Phi-4-multimodal’ı adım adım kullanarak metin, görsel ve sesle çalışabilen bir çok modlu dil eğitmeni nasıl oluşturacağınızı anlatacağım. Bu uygulamanın temel özellikleri şunlardır:
Metin tabanlı öğrenme: Gerçek zamanlı dilbilgisi düzeltmesi, çeviri, cümle yeniden yapılandırma ve bağlama duyarlı kelime önerileri sunar.
Görsel tabanlı öğrenme: Görsellerden metin çıkarır ve çevirir, görsel içeriği daha iyi kavrayabilmek için özetler.
Ses tabanlı öğrenme: Konuşmayı metne dönüştürür, telaffuz doğruluğunu değerlendirir ve çok dillide gerçek zamanlı konuşma çevirisi sağlar.
Önce Phi-4-multimodal modelini çok kısa tanıtalım, ardından uygulamayı oluşturmaya başlayalım.
Phi-4-Multimodal Nedir?
Phi-4-multimodal, metin, görsel ve konuşma işleme için tasarlanmış gelişmiş bir yapay zekâ modelidir. Birden fazla modalitenin sorunsuz entegrasyonuna olanak tanır ve dil öğrenme uygulamaları için idealdir. Bazı temel yetenekleri şunlardır:
Metin işleme: Dilbilgisi düzeltme, çeviri ve cümle kurma dahildir.
Görsel işleme: Phi 4, optik karakter tanıma (OCR), görsel özetleme ve çok modlu etkileşimler gerçekleştirebilir.
Konuşma işleme: Otomatik konuşma tanıma (ASR), telaffuz geri bildirimi ve konuşmadan metne çeviri de yapabilir.
128K belirteç bağlam uzunluğuyla Phi-4 çok modlu model, verimli akıl yürütme ve bellek kısıtlı ortamlar için optimize edilmiştir; bu da onu gerçek zamanlı, yapay zekâ destekli dil öğrenimi için mükemmel bir seçenek yapar.
Adım 1: Önkoşullar
Oluşturacağımız çok modlu dil eğitmeni uygulaması, metin, görsel ve sese dayalı etkileşimlerin birleşimiyle kullanıcılara yeni diller öğrenmede yardımcı olmak için tasarlanmış, yapay zekâ destekli etkileşimli bir araçtır.
Başlamadan önce aşağıdaki araç ve kütüphanelerin kurulu olduğundan emin olalım:
Python 3.8+
torch
Transformers
PIL
Soundfile
Gradio
Gerekli bağımlılıkları kurmak için aşağıdaki komutları çalıştırın:
Not: Bu proje bir Google Colab not defterinde A100 GPU kullanır. Daha eski bir GPU kullanıyorsanız (ör. NVIDIA V100), model başlatma adımında _attn_implementation="eager" ayarıyla FlashAttention2’yi devre dışı bırakmanız gerekebilir.
Yukarıdaki bağımlılıklar kurulduktan sonra aşağıdaki içe aktarma komutlarını çalıştırın:
import gradio as gr
import torch
import requests
import io
import os
import soundfile as sf
from PIL import Image
from transformers import AutoModelForCausalLM, AutoProcessor, GenerationConfigAltyapı:
Adım 2: Phi-4-Multimodal’ı Yükleme
Phi-4’ün çok modlu yeteneklerinden yararlanmak için önce modeli ve işlemcisini yüklüyoruz. Model yolu Hugging Face’ten alınır; işlemci ise metni belirteçlere ayırma, görselleri yeniden boyutlandırıp normalize etme ve ses dalga formlarını modele uyumlu bir biçime dönüştürme gibi görevleri üstlenerek sorunsuz çok modlu işlemeyi sağlar.
# Load model and processor
model_path ="microsoft/Phi-4-multimodal-instruct"
processor = AutoProcessor.from_pretrained(model_path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
model_path,
device_map="cuda",
torch_dtype="auto",
trust_remote_code=True,
_attn_implementation='flash_attention_2',).cuda()
generation_config = GenerationConfig.from_pretrained(model_path)Altyapı:
Model başlatma adımı, önceden eğitilmiş Phi-4 modelini nedensel dil modelleme (CLM) için yüklemek üzere 'AutoModelForCausalLM.from_pretrained() işlevini kullanır ve modeli device_map="cuda" ile GPU’ya yükler.
Bu adımda önemli bir parametre, uzun bağlam işlemede daha hızlı ve daha bellek verimli bir dikkat mekanizması sağlayan _attn_implementation='flash_attention_2'` değeridir.
Adım 3: Temel İşlevleri Oluşturma
Artık modeli yükledik; temel işlevleri oluşturalım.
1. Yanıtı temizleme
Herhangi bir LLM veya VLM tabanlı projede önemli bir husus, modelin doğru ve ilgili yanıtlar üretmesini sağlamaktır. Bu, çıktıda yer alan istem metnini kaldırmayı da içerir; böylece kullanıcılar, başta yer alan talimat görünmeden temiz ve doğrudan bir yanıt alırlar.
defclean_response(response, instruction_keywords):"""Removes the prompt text dynamically based on instruction keywords."""for keyword in instruction_keywords:if response.lower().startswith(keyword.lower()):
response = response[len(keyword):].strip()return responseAltyapı:
İstem anahtar sözcüklerine göre istem metnini budamak için basitçe strip() işlevini kullanıyoruz.
2. Girdi işleme
Şimdi, kullanıcı girdisine veya senaryoya bağlı olarak metin, görsel veya ses olabilen girdilerimizi işleyelim.
Yukarıdaki işlev, metin, görsel ve ses girdilerini ele alıp Phi-4-multimodal modelini kullanarak bir yanıt üretmekten sorumludur. İş akışının teknik bir dökümü şöyledir:
Görsel girdi işleme: Girdi türü "Image" ise, istem bir görsel yer tutucu (<|image_1|>) ile biçimlendirilir. Görsel yüklenir ve işlemci eşlik eden metni belirteçlere ayırırken görsel özellikleri çıkarır. İşlenen girdiler, optimize hesaplama için GPU’ya aktarılır.
Ses girdi işleme: Girdi türü "Audio" ise, istem bir ses yer tutucu (<|audio_1|>) ile yapılandırılır. Ses dosyası sf.read() işleviyle okunur; ham dalga formu ve örnekleme hızı çıkarılır. İşlemci, çok modlu anlayış için hem sesi hem metni kodlar.
Metin girdi işleme: Girdi türü "Text" ise, metin doğrudan isteme gömülür. İşlemci girdiyi belirteçlere ayırır ve kodlar; modelin sonraki işlemesine hazırlar.
3. Çeviri ve dilbilgisi düzeltmeleri
Sırada, metni Phi-4-multimodal modelini kullanarak çeviri ve dilbilgisi düzeltmesi için işlemek var.
defprocess_text_translate(text, target_language):
prompt =f'Translate the following text to {target_language}: "{text}"'return process_input(text,"Text", prompt)defprocess_text_grammar(text):
prompt =f'Check the grammar and provide corrections if needed for the following text: "{text}"'return process_input(text,"Text", prompt)Altyapı:
process_text_translate() işlevi, hedef dili belirterek dinamik bir çeviri istemi oluşturur; girdiyi ve yapılandırılmış istemi process_input() işlevine ileterek çevrilmiş metni döndürür.
Benzer şekilde process_text_grammar() işlevi bir dilbilgisi düzeltme istemi oluşturur, process_input() işlevini girdi metni ve türü ile çağırır ve metnin dilbilgisel olarak düzeltilmiş bir sürümünü döndürür. Her iki işlev de modelin çeviri ve dilbilgisi düzeltme yeteneklerini kullanarak dil işlemeyi sadeleştirir.
Adım 4: Gradio ile Çok Modlu Demoyu Oluşturma
Artık tüm temel mantık işlevlerimiz hazır. Sırada Gradio ile etkileşimli bir arayüz oluşturmak var.
Yukarıdaki kod, Gradio arayüzünü; metin tabanlı, görsel tabanlı ve ses tabanlı öğrenme olmak üzere üç etkileşimli sekme halinde düzenler; her biri farklı dil öğrenme işlevleri için tasarlanmıştır.
Kullanıcılar çeviri veya dilbilgisi düzeltmesi için metin girebilir, metin çıkarımı ve özetleme için görseller yükleyebilir ya da konuşma deşifresi ve çeviri için ses sağlayabilir.
Her işlev, Gradio’nun click() yöntemiyle tetiklenir; gerekli girdileri iletip çıktıları dinamik olarak güncelleyerek process_text_translate(), process_text_grammar() ve process_input() gibi işleme işlevlerini çağırır.
Clear düğmesi, her sekmede giriş ve çıkışları sıfırlamak için eklenmiştir; bu da akıcı bir kullanıcı deneyimi sağlar. Son olarak arayüz, uygulamadaki hataları geliştiricilerin kolayca ayıklayabilmesi için demo.launch(debug=True) ile başlatılır.
Adım 5: Uygulamayı Test Etme
Bu uygulamayla yaptığım birkaç deneme aşağıdadır.
Çeviri ve dilbilgisi kontrolü
Çeviri ve dilbilgisi kontrolü görevleri için, "Hello world" metnini verdim ve modeli bunu Fransızcaya çevirmesi ve dilbilgisini doğrulaması için yönlendirdim (çeviri ve dilbilgisi kontrolü için farklı düğmelere dikkat edin).
Görseldeki metni çevirmek
Bu örnekte, yayaların belirli bir yolda yürümemesini söyleyen bir İspanyolca dur işareti görseli verdim. Model, işaretin anlamını doğru şekilde yorumladı ve şu yanıtı üretti: "Do not walk on the track."
Ses deşifresi ve çeviri
Ses deşifresi için İngilizce bir ses dosyası verdim ve modeli konuşmayı deşifre etmesi ve metni Fransızcaya çevirmesi için yönlendirdim.
Sonuç
Bu eğitimde, Phi-4 çok modlu modelini kullanarak metin, görsel ve ses tabanlı dil öğrenimini mümkün kılan bir çok modlu dil eğitmeni oluşturduk. Gerçek zamanlı çeviriler, dilbilgisi düzeltmeleri, konuşma deşifresi ve görsel tabanlı öğrenme içgörüleri sağlamak için Phi-4’ün gelişmiş görsel, konuşma ve metin yeteneklerini kullandık. Bu proje, çok modlu yapay zekânın dil eğitimini ve erişilebilirliği nasıl geliştirebileceğini gösteriyor.
ML (Üretken Yapay Zekâ) alanında Google Developers Uzmanıyım, Kaggle 3x Expert unvanına sahibim ve 3+ yıllık teknoloji deneyimiyle Women Techmakers Elçisiyim. 2020'de bir sağlık teknolojileri girişiminin kurucu ortağı oldum ve Georgia Tech'te makine öğrenmesi alanında uzmanlaşarak bilgisayar bilimleri yüksek lisansı yapıyorum.
Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
OpenAI API, Hugging Face ve LangChain dahil olmak üzere en yeni yapay zeka geliştirici araçlarıyla yapay zeka destekli uygulamalar oluşturmayı öğrenin.
Önceden eğitilmiş modeller üzerinde çıkarım yapmak, özel veri kümeleri üzerinde ince ayar yapmak ve performansı optimize etmek için Llama 3 ile denemeler yapın.
Phi-4-multimodal, Microsoft tarafından geliştirilen hafif bir çok modlu temel modelidir. Microsoft’un küçük dil modelleri (SLM) ailesinin bir parçasıdır.
Bu eğitimde, Phi-4-multimodal’ı adım adım kullanarak metin, görsel ve sesle çalışabilen bir çok modlu dil eğitmeni nasıl oluşturacağınızı anlatacağım. Bu uygulamanın temel özellikleri şunlardır:
Önce Phi-4-multimodal modelini çok kısa tanıtalım, ardından uygulamayı oluşturmaya başlayalım.
Phi-4-Multimodal Nedir?
Phi-4-multimodal, metin, görsel ve konuşma işleme için tasarlanmış gelişmiş bir yapay zekâ modelidir. Birden fazla modalitenin sorunsuz entegrasyonuna olanak tanır ve dil öğrenme uygulamaları için idealdir. Bazı temel yetenekleri şunlardır:
128K belirteç bağlam uzunluğuyla Phi-4 çok modlu model, verimli akıl yürütme ve bellek kısıtlı ortamlar için optimize edilmiştir; bu da onu gerçek zamanlı, yapay zekâ destekli dil öğrenimi için mükemmel bir seçenek yapar.
Adım 1: Önkoşullar
Oluşturacağımız çok modlu dil eğitmeni uygulaması, metin, görsel ve sese dayalı etkileşimlerin birleşimiyle kullanıcılara yeni diller öğrenmede yardımcı olmak için tasarlanmış, yapay zekâ destekli etkileşimli bir araçtır.
Başlamadan önce aşağıdaki araç ve kütüphanelerin kurulu olduğundan emin olalım:
Gerekli bağımlılıkları kurmak için aşağıdaki komutları çalıştırın:
Daha iyi performans için FlashAttention2’nin de kurulu olduğundan emin olmamız gerekir:
Not: Bu proje bir Google Colab not defterinde A100 GPU kullanır. Daha eski bir GPU kullanıyorsanız (ör. NVIDIA V100), model başlatma adımında
_attn_implementation="eager"ayarıylaFlashAttention2’yi devre dışı bırakmanız gerekebilir.Yukarıdaki bağımlılıklar kurulduktan sonra aşağıdaki içe aktarma komutlarını çalıştırın:
Adım 2: Phi-4-Multimodal’ı Yükleme
Phi-4’ün çok modlu yeteneklerinden yararlanmak için önce modeli ve işlemcisini yüklüyoruz. Model yolu Hugging Face’ten alınır; işlemci ise metni belirteçlere ayırma, görselleri yeniden boyutlandırıp normalize etme ve ses dalga formlarını modele uyumlu bir biçime dönüştürme gibi görevleri üstlenerek sorunsuz çok modlu işlemeyi sağlar.
Model başlatma adımı, önceden eğitilmiş Phi-4 modelini nedensel dil modelleme (CLM) için yüklemek üzere 'AutoModelForCausalLM.from_pretrained()
işlevini kullanır ve modelidevice_map="cuda"ile GPU’ya yükler.Bu adımda önemli bir parametre, uzun bağlam işlemede daha hızlı ve daha bellek verimli bir dikkat mekanizması sağlayan _attn_implementation='flash_attention_2'` değeridir.
Adım 3: Temel İşlevleri Oluşturma
Artık modeli yükledik; temel işlevleri oluşturalım.
1. Yanıtı temizleme
Herhangi bir LLM veya VLM tabanlı projede önemli bir husus, modelin doğru ve ilgili yanıtlar üretmesini sağlamaktır. Bu, çıktıda yer alan istem metnini kaldırmayı da içerir; böylece kullanıcılar, başta yer alan talimat görünmeden temiz ve doğrudan bir yanıt alırlar.
İstem anahtar sözcüklerine göre istem metnini budamak için basitçe
strip()işlevini kullanıyoruz.2. Girdi işleme
Şimdi, kullanıcı girdisine veya senaryoya bağlı olarak metin, görsel veya ses olabilen girdilerimizi işleyelim.
Yukarıdaki işlev, metin, görsel ve ses girdilerini ele alıp Phi-4-multimodal modelini kullanarak bir yanıt üretmekten sorumludur. İş akışının teknik bir dökümü şöyledir:
"Image"ise, istem bir görsel yer tutucu (<|image_1|>) ile biçimlendirilir. Görsel yüklenir ve işlemci eşlik eden metni belirteçlere ayırırken görsel özellikleri çıkarır. İşlenen girdiler, optimize hesaplama için GPU’ya aktarılır."Audio"ise, istem bir ses yer tutucu (<|audio_1|>) ile yapılandırılır. Ses dosyasısf.read()işleviyle okunur; ham dalga formu ve örnekleme hızı çıkarılır. İşlemci, çok modlu anlayış için hem sesi hem metni kodlar."Text"ise, metin doğrudan isteme gömülür. İşlemci girdiyi belirteçlere ayırır ve kodlar; modelin sonraki işlemesine hazırlar.3. Çeviri ve dilbilgisi düzeltmeleri
Sırada, metni Phi-4-multimodal modelini kullanarak çeviri ve dilbilgisi düzeltmesi için işlemek var.
process_text_translate()işlevi, hedef dili belirterek dinamik bir çeviri istemi oluşturur; girdiyi ve yapılandırılmış istemiprocess_input()işlevine ileterek çevrilmiş metni döndürür.Benzer şekilde
process_text_grammar()işlevi bir dilbilgisi düzeltme istemi oluşturur,process_input()işlevini girdi metni ve türü ile çağırır ve metnin dilbilgisel olarak düzeltilmiş bir sürümünü döndürür. Her iki işlev de modelin çeviri ve dilbilgisi düzeltme yeteneklerini kullanarak dil işlemeyi sadeleştirir.Adım 4: Gradio ile Çok Modlu Demoyu Oluşturma
Artık tüm temel mantık işlevlerimiz hazır. Sırada Gradio ile etkileşimli bir arayüz oluşturmak var.
Yukarıdaki kod, Gradio arayüzünü; metin tabanlı, görsel tabanlı ve ses tabanlı öğrenme olmak üzere üç etkileşimli sekme halinde düzenler; her biri farklı dil öğrenme işlevleri için tasarlanmıştır.
Kullanıcılar çeviri veya dilbilgisi düzeltmesi için metin girebilir, metin çıkarımı ve özetleme için görseller yükleyebilir ya da konuşma deşifresi ve çeviri için ses sağlayabilir.
Her işlev, Gradio’nun
click()yöntemiyle tetiklenir; gerekli girdileri iletip çıktıları dinamik olarak güncelleyerekprocess_text_translate(),process_text_grammar()veprocess_input()gibi işleme işlevlerini çağırır.Clear düğmesi, her sekmede giriş ve çıkışları sıfırlamak için eklenmiştir; bu da akıcı bir kullanıcı deneyimi sağlar. Son olarak arayüz, uygulamadaki hataları geliştiricilerin kolayca ayıklayabilmesi için
demo.launch(debug=True)ile başlatılır.Adım 5: Uygulamayı Test Etme
Bu uygulamayla yaptığım birkaç deneme aşağıdadır.
Çeviri ve dilbilgisi kontrolü
Çeviri ve dilbilgisi kontrolü görevleri için, "Hello world" metnini verdim ve modeli bunu Fransızcaya çevirmesi ve dilbilgisini doğrulaması için yönlendirdim (çeviri ve dilbilgisi kontrolü için farklı düğmelere dikkat edin).
Görseldeki metni çevirmek
Bu örnekte, yayaların belirli bir yolda yürümemesini söyleyen bir İspanyolca dur işareti görseli verdim. Model, işaretin anlamını doğru şekilde yorumladı ve şu yanıtı üretti: "Do not walk on the track."
Ses deşifresi ve çeviri
Ses deşifresi için İngilizce bir ses dosyası verdim ve modeli konuşmayı deşifre etmesi ve metni Fransızcaya çevirmesi için yönlendirdim.
Sonuç
Bu eğitimde, Phi-4 çok modlu modelini kullanarak metin, görsel ve ses tabanlı dil öğrenimini mümkün kılan bir çok modlu dil eğitmeni oluşturduk. Gerçek zamanlı çeviriler, dilbilgisi düzeltmeleri, konuşma deşifresi ve görsel tabanlı öğrenme içgörüleri sağlamak için Phi-4’ün gelişmiş görsel, konuşma ve metin yeteneklerini kullandık. Bu proje, çok modlu yapay zekânın dil eğitimini ve erişilebilirliği nasıl geliştirebileceğini gösteriyor.