Transformer’ları Cebe Sığdırmak: Modelleri Optimize Edip Uç Cihazlarda Çalıştırma

Community Article Published November 3, 2025

Giriş

Mobil cihazlarda ve uç (edge) ortamlarda yapay zeka modellerini çalıştırmak, son yıllarda giderek önem kazanan bir konu haline gelmiştir. Özellikle büyük Transformer tabanlı dil modellerini bulut yerine doğrudan cihaz üzerinde çalıştırmak, gizlilik ve düşük gecikme açısından önemli avantajlar sunar. Ancak, bu modellerin mobil cihazlarda verimli çalışması için çeşitli optimizasyon teknikleri uygulanmalıdır.

Neden Modelleri Cihaz Üzerinde Çalıştırmalı?

  • Gizlilik: Veri cihazdan çıkmaz.
  • Düşük Gecikme: Gerçek zamanlı tepki.
  • Çevrimdışı Kullanım: İnternet gerekmeden çalışabilir.
  • Maliyet ve Ölçeklenebilirlik: Bulut sunucu maliyetlerinden kaçınma.

Model Optimizasyon Teknikleri

1. Kuantizasyon

Modelin ağırlık ve aktivasyonlarının daha az bit ile temsil edilmesi (INT8, FP16).

Yöntemler:

  • Dinamik Kuantizasyon: Hesaplama sırasında uygulanan kuantizasyon.
  • Statik Kuantizasyon: Kalibrasyonla önceden belirlenen aralıklar kullanılır.

Hugging Face Optimum ile Örnek:

from optimum.onnxruntime import ORTQuantizer
from optimum.onnxruntime.configuration import AutoQuantizationConfig

quantizer = ORTQuantizer.from_pretrained("distilbert-base-uncased")
qconfig = AutoQuantizationConfig.arm64()
quantizer.quantize(save_dir="quantized-model", quantization_config=qconfig)

2. Bilgi Distilasyonu

Büyük bir modelin bilgisinin daha küçük bir modele aktarılması.

Örnek Modeller:

  • DistilBERT
  • TinyBERT
  • MobileBERT

Avantajlar:

  • Daha düşük parametre sayısı
  • Daha düşük gecikme
  • Daha az enerji tüketimi

3. Model Budama (Pruning)

Modelin az kullanılan kısımlarının kaldırılması.

Türleri:

  • Unstructured: Tek tek ağırlıkları sıfırlama.
  • Structured: Katman, attention head gibi yapısal elemanların kaldırılması.

Hugging Face Optimum ile Budama:

from optimum.intel.neural_compressor import INCTrainer
from neural_compressor import WeightPruningConfig

pruning_config = WeightPruningConfig(pruning_type="magnitude", target_sparsity=0.2)
trainer = INCTrainer(model=model, pruning_config=pruning_config, ...)
trainer.train()

Mobil Platformlarda Model Çalıştırma

ONNX + ONNX Runtime

  • Platform bağımsız
  • NNAPI, Core ML, XNNPACK desteği

Core ML

  • iOS özelinde optimize
  • Apple Neural Engine kullanımı
  • coremltools ile dönüşüm
import coremltools as ct
traced_model = torch.jit.trace(model, example_input)
mlmodel = ct.convert(traced_model, inputs=[ct.TensorType(shape=input_shape)])
mlmodel.save("model.mlmodel")

TensorFlow Lite (TFLite)

  • Android cihazlar için optimize
  • Hugging Face Optimum ile çıktı alınabilir
optimum-cli export tflite --model google/bert-base-uncased --sequence_length 128 bert_tflite/

Hugging Face Optimum

  • Kolay kuantizasyon ve export
  • Intel, ONNX, TFLite destekleri
  • CLI ve Python API mevcut

Sonuç

Mobil cihazlarda Transformer modellerini çalıştırmak artık mümkün. Hugging Face Optimum, ONNX, Core ML ve TFLite gibi aracılar ile modelinizi hem küçültebilir, hem de mobil uyumlu hale getirebilirsiniz. Gizlilik, gecikme ve çevrimdışı çalışma avantajları sayesinde uygulamanızı daha verimli ve kullanıcı dostu hale getirmek için bu teknikleri entegre edebilirsiniz.

Community

Sign up or log in to comment