Büyük dil modelleri (LLM’ler) artık pek çok teknoloji alanının ayrılmaz bir parçası; çoğu ürün bir ölçüde LLM tabanlı özellikler barındırıyor. Ancak bu modelleri dizüstü bilgisayar, masaüstü veya akıllı telefon gibi kişisel cihazlarda çalıştırmak, donanım sınırlamaları nedeniyle önemli engellerle karşılaştı.
Buna yanıt olarak PyTorch ekibi, LLM’lerin farklı donanım platformlarında verimliliğini artırmayı hedefleyen, uyarlanabilir bir çatı olan Torchchat’i tanıttı. Bu çığır açan yaklaşım, geniş bir cihaz yelpazesinde yerel işlemenin etkinleşmesini kolaylaştırarak gelişmiş yapay zekâ modellerini daha erişilebilir kılma potansiyeli taşıyor.
PyTorch, Facebook’un Yapay Zekâ Araştırma Laboratuvarı (FAIR) tarafından geliştirilen, önde gelen bir açık kaynak makine öğrenimi çatısıdır. Bilgisayarlı görü ve doğal dil işleme dahil çeşitli uygulamaları destekler.
Bu yazıda, Torchchat’in yeteneklerine genel bir bakış sunacak ve yerelde nasıl kurulacağını öğreneceğiz.
Yapay Zeka Uygulamaları Geliştirin
Torchchat’in Yetenekleri
Torchchat dört temel işlev sunar:
- PyTorch ile Python kullanarak LLM’leri çalıştırma.
- Python olmadan masaüstü uygulamasında veya sunucuda kendi kendine yeten modeller çalıştırma.
- Modelleri bir mobil cihazda yürütme.
- Bir modelin performansını değerlendirme.
PyTorch ile Python kullanarak LLM’leri çalıştırın
Bu mod, Python ve PyTorch yüklü bir makinede bir LLM çalıştırmayı sağlar. Modele doğrudan terminalden ya da bir REST API ile bir sunucu kurarak etkileşim kurabiliriz. Bu makalede kurulumda buna odaklanacağız.
Kendi kendine yeten modelleri çalıştırma
Torchchat, PyTorch çıkarım programları için Python ve PyTorch’a bağımlılığı olmayan, dinamik bir kütüphane biçiminde kendi kendine yeten, dağıtılabilir bir yürütülebilir dosya oluşturmak üzere AOT Inductor’ı (Zamandan Önce Derleyici) kullanır.
Bu yaklaşım, üretim ortamında, sunum ortamındaki güncellemeler ve değişiklikler boyunca model çalışma zamanı kararlılığı gereksinimini karşılamaya yöneliktir ve yeniden derleme ihtiyacı olmadan modellerin çalışır durumda kalmasını sağlar.
AOT Inductor, TorchScript gibi metin biçimleriyle ilişkili sınırlamaları ve ek yükü ele alarak, hızlı yüklenen ve çalıştırmaya hazır, verimli ikili dağıtım formatlarını etkinleştirerek model dağıtımını optimize etmeye odaklanır. Hem CPU hem de GPU performansı için kod üretimi ve optimizasyon tekniklerinden yararlanır; amaç, ek yükü azaltmak ve yürütme hızını artırmaktır.
Mobil cihazlarda yürütme
Mobil cihazda yürütme için Torchchat, ExecuTorch’tan yararlanır. AOT Inductor’a benzer şekilde ExecuTorch, modeli mobil veya gömülü bir cihazda yürütmeye yönelik olarak optimize eder. Daha sonra modeli yürütmek için kullanılabilecek bir PTE artifaktı üretir.
Bir modeli değerlendirme
Torchchat’in değerlendirme modu, lm_eval içindeki çeşitli görevlerde bir LLM’in performansını ölçmek için kullanılabilir. Bu, yeni modellerini yaygın ölçütlerde değerlendirmek isteyen araştırmacılar için önemli bir özelliktir.
Neden Torchchat Kullanmalı
Bir LLM’i yerelde çalıştırmak, OpenAI’nin API’si gibi üçüncü taraf bir bulut API’sine güvenmek yerine, farklı ihtiyaç ve senaryolara hitap eden çeşitli kullanım durumları ve faydalar sunar.
- Gizliliğe duyarlı uygulamalar: Sağlık, finans ve hukuk gibi hassas verilerle uğraşan sektörlerde, LLM’leri yerelde çalıştırmak, gizli bilgilerin kurum altyapısını terk etmemesini sağlar ve veri koruma düzenlemelerine uyum sağlar.
- Gerçek zamanlı uygulamalar: Etkileşimli sohbet botları, gerçek zamanlı içerik üretimi ve canlı izleme sistemleri gibi düşük gecikme süreli yanıtlar gerektiren uygulamalar, bulut API’sine gidiş-dönüş ağ gecikmesini ortadan kaldıran yerel çalıştırmadan fayda sağlar.
- Çevrimdışı veya düşük bağlantı senaryoları: İnternet bağlantısının zayıf veya hiç olmadığı ortamlarda, yerel dağıtım; saha çalışmaları, uzaktan eğitim ve uçuş içi eğlence sistemleri gibi LLM uygulamalarının kullanılmasını mümkün kılar.
- Maliyet kontrolü ve optimizasyon: Yüksek hacimli veya sürekli kullanım durumlarında, yerel dağıtım daha maliyet etkin olabilir; bulut API’lerinin istek başına fiyatlandırmasından kaçınılır ve mevcut hesaplama kaynaklarından yararlanılabilir.
Bir modeli bulut yerine bir cihazda yerel olarak çalıştırma hakkında daha fazla bilgiyle ilgileniyorsanız, Edge AI üzerine bu blog yazısını öneririm.
Python ile Yerel Kurulum
Hadi Torchchat’i adım adım yerelde kuralım. Torcchat deposunu klonlamakla başlayacağız.
Kodu klonlayın veya indirin
Torchchat’i yerelde kurmanın ilk adımı Torchchat deposunu klonlamaktır. Git yüklüyse, bir terminal açıp şu komutu çalıştırarak depoyu klonlayabiliriz:
git clone git@github.com:pytorch/torchchat.git
Alternatif olarak, Github arayüzünü kullanarak depoyu indirebiliriz.

Kurulum
Python 3.10’un zaten kurulu olduğunu varsayıyoruz. Python’u nasıl kuracağınızla ilgili bir rehber için bu makaleye göz atın.
Torchchat’i kurmak için Torchchat klasöründe bir terminal açın. Önce bir sanal ortam oluşturarak başlayalım:
python -m venv .venv
Kısaca, sanal ortam; bir projeye ait Python kütüphaneleri, paketleri ve bazen Python’un belirli bir sürümüne ait kurulum dizinlerini içeren, projeye özel bir dizindir. Bu sayede her proje, ihtiyaç duyduğu yazılım sürümlerini diğer projelerin gereksinimlerinden etkilenmeden kullanır.
Sanal ortamı oluşturduktan sonra etkinleştirmemiz gerekir. Bunu şu komutla yapabiliriz:
source .venv/bin/activate
Son olarak, Torchchat’in çalışması için gerekli tüm bağımlılıkları kurarak ortamı hazırlamamız gerekiyor. Torchchat bir kurulum betiği, install_requirements.sh, sağlar; bunu şu komutla çalıştırabiliriz:
./install_requirements.sh
Artık Torchchat kurulmuş ve kullanıma hazır olmalı. Kurulumu, kullanılabilir Torchchat komutlarını listeleyerek doğrulayabiliriz, şöyle:
python torchchat.py --help
Torchchat’i Python ile Yerelde Kullanma
Torchchat kurulduğuna göre, LLM’leri yerel makinemizde çalıştırmaya başlayabiliriz.
Desteklenen tüm modelleri listeleme
TorchChat geniş bir LLM yelpazesini destekler. Desteklenen modelleri list komutunu kullanarak listeleyebiliriz:
python torchchat.py list
Modellerin tam listesi GitHub depolarında bulunabilir.

“Notlar” bölümü, modelin en iyi kullanım durumu ve Torchchat komutlarında modeli belirtirken kullanılan model takma adı gibi yararlı bilgiler sunar.
Bir model indirme
Torchchat, modeller için dağıtım kanalı olarak Hugging Face’i kullanır. Hugging Face, herkesin açık kaynak kodla NLP ve ML modelleri oluşturmasına, eğitmesine ve dağıtmasına imkân veren araçlara sahip işbirlikçi bir platformdur. Daha fazla bilgi için Hugging Face Nedir başlıklı bu blog yazısına göz atın.
Bir model indirmeden önce şunları yapmamız gerekir:
- Hugging Face komut satırı arayüzünü kurun
- Hugging Face’te bir hesap oluşturun
- Bir erişim belirteci oluşturun
- Hugging Face komut satırı arayüzü ile oturum açın
Hugging Face komut satırı arayüzünü kurmak için pip kullanırız:
pip install huggingface_hub
Ardından Hugging Face web sitesine gidip bir hesap oluşturabiliriz. Hesap oluşturduktan sonra, profil ayarlarına giderek bir erişim belirteci oluşturabiliriz:

Profilde, yeni bir belirteç oluşturmak için “Access Tokens” menüsünü açabiliriz:

Belirteç izinleriyle ilgili olarak, bu makale için okuma izinleri yeterlidir. Belirteç oluşturulduğunda panoya kopyalamamız gerektiğini unutmayın; daha sonra tekrar göremeyeceğiz.
Belirteci kullanarak aşağıdaki komutla oturum açabiliriz:
huggingface-cli login
Oturum açtıktan sonra download komutunu kullanarak bir modeli indirebiliriz. Bu modellerden bazıları oldukça büyük olabilir; yeterli disk alanınız olduğundan emin olun. Örnek olarak, küçük bir öykü üretim modeli olan stories15M modelini kullanacağız. İndirmesi hızlı olduğu ve özel izin gerektirmediği için başlamak için iyi bir modeldir.
İndirmek için şunu yaparız:
python torchchat.py download stories15M
Bir modeli çalıştırma
Modeli indirdikten sonra chat veya generate komutlarını kullanabiliriz. Metin üretmek için --prompt argümanı ile bir yönlendirme sağlamamız gerekir. İşte bir örnek:
python torchchat.py generate stories15M --prompt “Once upon a time”
Yukarıdaki komut, Torchchat’e stories15M modelini ”Once upon a time” yönlendirmesiyle metin üretmesi talimatını verir.
Modeli sohbet modunda çalıştırmak için, bir yönlendirme olmadan chat komutunu kullanırız.
python torchchat.py chat stories15M
Sohbet komutu, terminalde etkileşimli bir sohbet başlatır; LLM ile karşılıklı konuşabiliriz. Bazı modellerin generate modu için, bazılarının ise chat modu için daha uygun olduğunu unutmayın. Bu bilgi, model belgelerinin “Notlar” bölümünde yer alır.
Bir modele erişim isteme
Bazı modeller, örneğin llama3, indirilebilmek için özel erişim gerektirir. Böyle bir modeli indirmeye çalışırsak bir hata iletisi alırız:
Access to model meta-llama/Meta-Llama-3-8B-Instruct is restricted and you are not in the authorized list. Visit https://huggingface.co/meta-llama/Meta-Llama-3-8B-Instruct to ask for access.
Hata iletisinde verilen URL’yi takip ederek erişim isteyebiliriz. Kısa bir formu kişisel bilgilerle doldurup hizmet şartlarını kabul etmemiz gerekir. Erişim verildiğinde bir e-posta alacaksınız.

Gelişmiş Kullanım
Torchchat, LLM’leri yerelde çalıştırırken ihtiyaç ve donanımımıza uyarlamayı mümkün kılan birkaç ek seçenek sunar. Bu seçeneklerden bazılarını inceleyelim.
Hassasiyeti kontrol etme
LLM’ler, çok sayıda kayan nokta sayısının çarpılmasını içeren matris çarpımlarına büyük ölçüde dayanır. Bilgisayarda kayan nokta sayılarını farklı hassasiyetlerle temsil etmek için çeşitli veri türleri bulunur.
Daha yüksek hassasiyet, özellikle karmaşık görevler veya nüanslı dil anlayışı için, eğitim sırasında yakalanan ayrıntıların çıkarımda da aslına uygun temsil edilmesini sağlayabilir. Ancak yüksek hassasiyetli sayılar kullanmak çıkarımı önemli ölçüde yavaşlatabilir. Doğru veri türü, hız ve doğruluk arasındaki dengeye bağlıdır.
LLM’i çalıştırırken veri türünü ayarlamak için --dtype parametresini kullanabiliriz, örneğin:
python torchchat.py chat --dtype fast stories15M
Anında (Just-In-Time) derleme
--compile bayrağı, modelin Anında Derleme’yi (JIT) etkinleştirir. JIT, her seferinde yorumlamak yerine modelin bölümlerini çalışma zamanında makine düzeyi koda dinamik olarak derleyerek çıkarım performansını optimize etmek için kullanılan bir tekniktir. Bu yaklaşım, farklı donanım platformlarında çalışan modeller için verimliliği ve hızı önemli ölçüde artırabilir.
JIT kullanmak, ek derleme adımı nedeniyle daha yüksek başlangıç sürelerine yol açacaktır; ancak çıkarım daha hızlı çalışacaktır. chat’i JIT ile birlikte şöyle kullanırız:
python torchchat.py chat --compile stories15M
Bu seçeneğin tüm donanım türlerinde desteklenmeyebileceğini unutmayın. Bu durumda Torchchat derleme adımını yok sayacak ve LLM’i derleme olmadan çalıştıracaktır.
Kantizasyon
Kantizasyon, model boyutunu azaltmak ve performans veya doğruluğu önemli ölçüde etkilemeden çıkarım hızını artırmak için kullanılan bir tekniktir. Bu, özellikle LLM’leri uç cihazlara dağıtırken veya hesaplama kaynakları, bellek ve bant genişliğinin sınırlı olduğu ortamlarda önemlidir.
Özetle, kantizasyon; bir sinir ağının ağırlıklarını ve aktivasyonlarını kayan nokta gösteriminden (genellikle 32 bit float) 16 bit tamsayı, 8 bit tamsayı veya bazı durumlarda ikili gösterimler gibi daha düşük bitli gösterimlere dönüştürmeyi içerir.
Bu, --dtype ile hassasiyet ayarlamaktan farklıdır. Kantizasyon doğrudan model ağırlıkları üzerinde çalışarak daha küçük bir model oluşturur; veri türü ise çıkarım hesaplamalarında kullanılan veri tipini belirtir.
Torchchat’te kantizasyon kullanmak bir JSON yapılandırma dosyası gerektirir ve şu şekilde kullanılabilir:
python torchchat.py chat --quantize config.json stories15M
config.json yapılandırma dosyasının biçimi veya Torchchat’te kantizasyonun nasıl çalıştığı hakkında daha fazla ayrıntı için kantizasyon dokümantasyon sayfalarına göz atın.
Cihaz belirtimi
LLM’in yürütüleceği cihazı --device seçeneğiyle belirtebiliriz. Örneğin CUDA üzerinde çalıştırmak için şöyle kullanırdık:
python torchchat.py chat --device cuda stories15M
Sonuç
Torchchat, LLM çıkarımının demokratikleşmesinde büyük bir adımdır. Herkesin geniş bir cihaz yelpazesinde LLM’leri verimli şekilde çalıştırmasını kolaylaştırır.
Torchchat, bu yazıda tanıttıklarımızdan çok daha fazla yetenek sunar. Python ve PyTorch kullanarak bilgisayarınızda LLM’leri yerelde çalıştırmaya başlamanız için gerekli açıklamaları sağladık. Torchchat’i daha derinlemesine keşfetmenizi önemle tavsiye ederim.

