Kurs
Yalnızca metin işleyebilen büyük dil modelleri ile yetindiğimiz günler geride kaldı. Artık metin, görsel ve videoları anlayıp bunlarla etkileşime girebilen çok modlu LLM’ler talep ediyoruz.
Karşınızda Llama 3.2 11B & 90B görsel modelleri: Meta AI’nın hem metin hem de görsel girdileri işleyebilen ilk açık kaynak çok modlu modelleri.
Bu uygulamalı rehberde, Llama 3.2 ve Gradio yardımıyla çok modlu bir müşteri destek asistanı oluşturma sürecini adım adım anlatacağım. Eğitimin sonunda, metinsel açıklamaları ve yüklenen görselleri analiz ederek yararlı çözümler üretebilen, tıpkı bir destek bileti asistanı gibi çalışan, tam teşekküllü bir web uygulamanız olacak!
Başlamadan önce Llama 3.2’ye hızlı bir girişe ihtiyacınız varsa, bu Llama 3.2 rehberini öneririm.
İlk Kurulum
Bu uygulamalı demoda, Llama3.2-11B-Vision (çok modlu) modelini kullanacağız. Koda başlamadan önce, gerekli tüm bağımlılıkların olduğundan emin olalım.
Her şeyin çalışması için birkaç kütüphaneye ihtiyacımız var. Temel olanlar şunlardır:
- Transformers: Llama 3.2 gibi modellerle çalışmak için çekirdek kütüphane.
- Torch: Modelimizi çalıştıran derin öğrenme kütüphanesi.
- Gradio: Kullanıcı arayüzünü oluşturmak için.
Gerekli bağımlılıkları yüklemek için aşağıdaki komutları çalıştırın:
!pip3 install -U transformers bitsandbytes accelerate peft -q
!pip3 install gradio -q
Llama 3.2 Modelini ve İşleyicisini Yükleme
Şimdi Llama 3.2 modelini ve işleyicisini yükleyelim. Modeli ve işleyiciyi yüklemek için Hugging Face’in transformers kütüphanesini kullanacağız; modelin GPU varsa GPU’da, aksi halde varsayılan olarak CPU’da çalıştığından emin olacağız. 11B parametreli bir model olduğundan, Google Colab’de A100 GPU’da iyi çalışır.
Aşağıdaki kod bloğunda:
- Gerekli içe aktarmaları yapıyoruz.
- Modeli ve işleyiciyi, varsa GPU desteğiyle yüklüyoruz. Bu, özellikle büyük veri miktarlarını işlerken uygulamanın verimli çalışmasını sağlar.
- Dikkat edilmesi gereken önemli bir kod parçası
tie_weight()olup, girdi ve çıktı gömme katmanlarının ağırlıklarının aynı olmasını sağlar. Bu, bellek kullanımını azaltır ve performansı iyileştirebilir.
import torch
from PIL import Image
import gradio as gr
from transformers import MllamaForConditionalGeneration, AutoProcessor
def load_model():
model_id = "meta-llama/Llama-3.2-11B-Vision-Instruct"
device = "cuda" if torch.cuda.is_available() else "cpu" # Check if GPU is available
model = MllamaForConditionalGeneration.from_pretrained(
model_id,
torch_dtype=torch.float16 if torch.cuda.is_available() else torch.float32,
device_map="auto", # Automatically map to available device
offload_folder="offload", # Offload to disk if necessary
)
model.tie_weights() # Tying weights for efficiency
processor = AutoProcessor.from_pretrained(model_id)
print(f"Model loaded on: {device}")
return model, processor
Neden Gradio?
Gradio, web tabanlı arayüzlerle makine öğrenimi uygulamalarını hızla oluşturmamıza olanak tanıyan hafif bir Python kütüphanesidir. Karmaşık HTML veya JavaScript yazmak yerine, uygulamamızın bileşenlerini (metin kutuları, düğmeler veya görseller gibi) doğrudan Python ile tanımlayabiliriz.
Temel bir Gradio arayüzü şöyle görünür:

Gradio’nun bazı avantajları şunlardır:
- Kurulum zahmeti yok: Gradio uygulamaları birkaç satır Python koduyla barındırılır ve paylaşılır. Dahili paylaşım, genel bir bağlantı üzerinden erişim sağlar.
- İşbirlikçi arayüz: Modellerin canlı demolarının iş arkadaşlarıyla veya genel kullanımla paylaşılmasına olanak tanır. Birden çok kullanıcı aynı anda etkileşime girebilir.
- Birden fazla giriş ve çıkış türünü destekler: Metin ve görsellerin ötesinde çeşitli giriş/çıkış bileşenleri sunar.
- Bulutta barındırma için minimum yapılandırma: Hugging Face Spaces veya diğer bulut hizmetlerinde kolay dağıtım.
- Platformlar arası entegrasyon: Arayüzler diğer web uygulamalarına, Jupyter Notebooks’a veya blog yazılarına gömülebilir.
- Otomatik API oluşturma: Uygulama için otomatik olarak bir API üretir.
- Yerleşik güvenlik: Kötüye kullanımı önlemek için dosya boyutu sınırları ve diğer önlemleri içerir.
Bu demo için Gradio, kullanıcıların hem metin hem de görsel girişi yapmasını ve çıktıyı (bu örnekte metin ve görsel analizi) gerçek zamanlı görmesini kolaylaştırır. Kullanıcı dostu bir ortamda Llama 3.2 gibi modellerin gücünü göstermek için idealdir.
Yapay Zeka Uygulamaları Geliştirin
Llama 3.2 Çok Modlu Uygulamasını Oluşturma
Artık içe aktarmalarımızı ve modelimizi başarıyla kurduğumuza göre, uygulamanın ana kısmına geçelim—girdileri (metin ve görsel) işleme ve yanıt üretme.
Metinden metne üretim
Kullanıcı metnini ve isteğe bağlı olarak bir görseli alan bir işlev tanımlayarak başlıyoruz. Bu işlev daha sonra Llama 3.2 modelini kullanarak bir yanıt üretir.
def process_ticket(text, image=None):
model, processor = load_model()
try:
if image:
# Resize the image for consistency
image = image.convert("RGB").resize((224, 224))
prompt = f"<|image|><|begin_of_text|>{text}"
# Process both the image and text input
inputs = processor(images=[image], text=prompt, return_tensors="pt").to(model.device)
else:
prompt = f"<|begin_of_text|>{text}"
# Process text-only input
inputs = processor(text=prompt, return_tensors="pt").to(model.device)
# Generate response (restrict token length for faster output)
outputs = model.generate(**inputs, max_new_tokens=200)
# Decode the response from tokens to text
response = processor.decode(outputs[0], skip_special_tokens=True)
return response
except Exception as e:
print(f"Error processing ticket: {e}")
return "An error occurred while processing your request."
Bu işlev, döngü içinde iki tür girdiyi işler:
- Yalnızca metin: Görsel sağlanmazsa, model metin girdisine dayalı bir yanıt üretir.
- Metin + Görsel: Görsel sağlanırsa, model yanıt üretmeden önce hem metni hem görseli işler.
Girdi türü belirlendikten sonra, girdi işlemesi için transformer kütüphanesinden alınan bir işleyiciye iletilir. Ardından model, max_new_tokens aralığında bir çıktı üretir.
Gradio Arayüzünü Oluşturma
Gradio arayüzü her şeyi bir araya getirir ve web tabanlı formatta testler çalıştırmamızı sağlar. Bu arayüz, kullanıcıların karşılaştıkları bir sorunun metnini ve görsellerini göndermesine ve yapay zekâ tarafından üretilen çözümü görmesine olanak tanır.
Koda bir göz atalım ve ardından açıklayalım.
def create_interface():
text_input = gr.Textbox(
label="Describe your issue",
placeholder="Describe the problem you're experiencing",
lines=4,
)
image_input = gr.Image(label="Upload a Screenshot (Optional)", type="pil")
# Output element
output = gr.Textbox(label="Suggested Solution", lines=5)
# Create the Gradio interface
interface = gr.Interface(
fn=process_ticket, # Function to process inputs
inputs=[text_input, image_input], # User inputs (text and image)
outputs=output, # AI-generated output
title="Multimodal Customer Support Assistant",
description="Submit a description of your issue, along with an optional screenshot, and get AI-powered suggestions.",
)
# Launch the interface with debug mode
interface.launch(debug=True)
Yukarıdaki kodda şunları yapıyoruz:
- İki girdi tanımlıyoruz:
text_inputmetin içinimage_inputgörsel için- Yanıtı göstermek için bir çıktı kutusu belirtiyoruz.
- Arayüzü oluşturuyor ve şu parametreleri iletiyoruz:
- Girdiler
- Girdiyi işleme işlevi
- Modelden üretilen çıktı
- Arayüzün başlığı
- Açıklama (gerekirse)
- Temel kullanıcı arayüzünü kuruyoruz.
- Hataları ayıklamak için arayüzü
debug = Trueile başlatıyoruz. Kod sorunsuz çalıştığındaFalseolarak geri alın.
Son arayüz şöyle görünecek:

Çok modlu müşteri destek asistanı Gradio uygulamamız hazır! İstediğiniz yanıtı almak için max_new_tokens parametresini değiştirmeyi veya istemi biraz farklılaştırmayı deneyin.
Llama 3.2 ve Gradio için kullanım alanları
Bu eğitimde oluşturduğumuz demonun yanı sıra, az çabayla hayata geçirilebilecek birkaç kullanım alanı daha vardır. Bunlar arasında şunlar yer alır:
- Eğitim ve özel ders: Öğrenciler, sorularının yanında grafik veya diyagram gibi görsel araçlar yükleyebilir ve model hem görsel hem metinsel bilgiyi içeren kapsamlı yanıtlar üretebilir.
- İçerik oluşturma: Görsellere dayalı metin üreterek altyazı, blog yazısı ve sosyal medya içeriği oluşturmayı iyileştirin.
- Gayrimenkul sanal asistanlığı: Emlak görsellerini işleyip ilgili soruları yanıtlayarak danışmanlara ve müşterilere yardımcı olun. Mülk açıklamaları üretin veya fotoğraflardaki görsel ayrıntıları analiz edin.
Llama 3.2 ve Gradio ile Geliştirme için En İyi Uygulamalar
Her kullanım alanı için, bizimkine benzer bir uygulama geliştirirken her geliştiricinin kullanabileceği bazı ipuçları vardır. İşte llama3.2 gibi modellerle çalışırken benimsenebilecek bazı en iyi uygulamalar.
Gecikme yönetimi
Çok modlu görevler kaynak yoğun olabileceğinden, gecikmeyi azaltmak kritik önemdedir. Önbellekleme, model budama veya üretilen belirteç sayısını sınırlama gibi yöntemlerle modeli daha hızlı yanıtlar için optimize etmeyi düşünün.
Hata yönetimi
Hataları yakalamak için mekanizmalar kurmak önemlidir. Modelin anlamlı bir yanıt üretemediği durumlarda (ör. düşük görsel kalitesi nedeniyle) yedek yanıtlar veya hata iletileri sağlayabiliriz. Hatta insan geri bildirimi tercih edilebilir; bu da modelin iyileştirilmesine yardımcı olur.
Performans izleme
Uygulamanın yanıt süreleri ve kullanıcı etkileşim verileri gibi performansını izlemek, arayüzü optimize etmeye ve kullanıcı deneyimini iyileştirmeye yardımcı olabilir. Performans süresini not ederek, bits and bytes gibi kütüphanelerle model gecikmesini optimize etmeyi deneyebiliriz.
Sonuç
Bu rehberde, Llama 3.2’nin çok modlu yeteneklerini Gradio’nun sezgisel arayüzüyle nasıl birleştireceğimizi öğrendik. Müşteri desteğinden eğitime ve içerik oluşturmaya kadar potansiyel uygulamalar geniş ve çeşitlidir.
Gecikme yönetimi, hata işleme ve performans izleme gibi en iyi uygulamalara bağlı kalarak, Llama 3.2 ve Gradio uygulamalarımızın sağlam, verimli ve kullanıcı dostu olmasını sağlayabiliriz.
Daha fazlasını öğrenmek için şu eğitimleri öneririm:
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.

