deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak Hacker News – Front Page (native)

GPT-2 çıkarımı (inference) tamamen CMake ile Q16.16 tam sayı matematiği kullanılarak gerçekleştirildi

GitHub'da yayınlanan bir proje, OpenAI'ın GPT-2 modelini yalnızca CMake betiğiyle uyguluyor; çıkarımı Q16.16 sabit noktalı tam sayı aritmetiğiyle çalıştırıyor ve Hacker News'in ana sayfasına kadar yükseldi.

GPT-2 çıkarımı (inference) tamamen CMake ile Q16.16 tam sayı matematiği kullanılarak gerçekleştirildi

Bir build betiği olarak yazılmış bir dil modeli

GitHub'da AlpinDale/gpt2.cmake adıyla yayınlanan ve Hacker News'in ana sayfasına ulaşan bir proje, OpenAI'ın GPT-2 dil modelini yalnızca CMake ile — normalde C ve C++ derlemesini ayarlamak için kullanılan, platformlar arası build yapılandırma diliyle — uyguluyor. Depo'nun README'sine göre model Q16.16 tam sayı aritmetiğiyle çalıştırılıyor; yani tüm sayısal işlemler floating point yerine sabit noktalı (fixed point) olarak yapılıyor.

Depo ne sunuyor

Proje iki farklı çalıştırma yolu sunuyor. İlki küçük bir oyuncak model: tools/gen_tables.py ve tools/gen_model.py dosyalarını çalıştırın, ardından betiği cmake -P gpt2.cmake komutuyla yürütün. İkinci yol ise gerçek checkpoint'u hedefliyor. README, kullanıcıların model.safetensors, vocab. ve merges.txt dosyalarını Hugging Face'teki openai-community/gpt2 deposundan indirmesini, verileri hazırlamak için tools/gen_full.py dosyasını çalıştırmasını ve ardından cmake -P gpt2_full.cmake -DPROMPT="Hello" -DN=2 gibi bir komutla üretimi başlatmasını istiyor.

Python yardımcıları yalnızca hazırlık aşamasında görünüyor; indirilen ağırlık (weights) ve tokenizer dosyalarını işliyorlar. Üretimin kendisi CMake'in betik moduyla yürütülüyor; cmake -P, bir build yapılandırmak yerine .cmake dosyasını bağımsız bir program olarak çalıştırıyor. Kod BSD 3-Clause lisansıyla yayınlandı.

Neden sabit noktalı aritmetik

Q16.16 seçimi doğrudan CMake'in tasarımından kaynaklanıyor. Betik dili string değişkenleri ve yalnızca tam sayılar üzerinde çalışan bir math() komutu sunuyor; yerleşik bir floating point tipi yok. Q16.16 bunu her sayıyı bir tam sayı olarak saklayarak çözüyor: düşük 16 bit kesirli kısmı, kalan bitler ise tam kısmı temsil ediyor — floating point birimi olmayan donanımlardan klasik bir teknik. Bir transformer'ın ileri geçişi (forward pass) büyük ölçüde matris çarpımlarına, toplamalara ve token logitleri üzerinden bir softmax'a indirgendiğinden ve tüm bunlar ölçeklenmiş tam sayılarla yaklaşılabildiğinden, GPT-2 hesabının tamamı CMake'in yalnızca tam sayılı dünyasına sığıyor.

OpenAI tarafından 2019'da yayınlanan GPT-2, modern standartlara göre küçük — README'de referans verilen temel checkpoint 124 milyon parametrelik model — ve bu da onu tam da bu tür taşınabilirlik deneyleri için referans hedef haline getiriyor.

Neden önemli

Bu proje, dil modeli çıkarımının özünde taşınabilir bir aritmetik olduğunun en yeni kanıtı. Gereken her şey — tensor işlemleri, byte-pair tokenizasyonu, bir sonraki token'ı üretme — döngü ve tam sayı matematiği sunan herhangi bir runtime'da ifade edilebilir. Benzer gösteriler daha önce tarayıcıları, elektronik tabloları ve SQL motorlarını hedeflemişti; bunu CMake ile yapmak ise bir yapılandırma dilinin amaçlanan işlevinin ne kadar ötesine itilebileceğini gözler önüne seriyor ve cmake'in zaten kurulu olduğu her yerde çalışıyor ki bu, çok büyük sayıda geliştirme makinesini tanımlıyor.

Sabit nokta yaklaşımının ciddi bir karşılığı da var: yalnızca tam sayı içeren çıkarım, floating point desteği olmayan mikrodenetleyicilerdeki ve diğer edge donanımındaki nicemlenmiş (quantized) modellerin temelini oluşturuyor. Kimse buradan hız beklememeli — CMake betikleri yorumlanarak çalışıyor ve araç hiçbir zaman sayısal işler için tasarlanmadı — ama mesele bu değil. Mesele şu ki, LLM çıkarımının çalışabileceği sınırlar sürekli genişliyor; bazen hiçbir framework üreticisinin hiç planlamadığı yerlere doğru.

  • #cmake
  • #gpt-2
  • #llm-inference
  • #fixed-point
  • #open-source

İlgili yazılar