Transformers.js ile Cross-Origin Storage API Deneyi: Web'de AI Modellerini Paylaşma
Hugging Face'in Transformers.js kütüphanesi, tarayıcıda yapay zeka modellerini çalıştırmayı kolaylaştırıyor. Ancak farklı web siteleri aynı modeli kullandığında, her site modeli tekrar indirip önbelleğe alıyor. Cross-Origin Storage (COS) API önerisi, bu tekrarı önleyerek kaynakları paylaşmayı hedefliyor. Bu yazıda, COS API'nin Transformers.js ile nasıl çalıştığını ve web geliştiriciler için sunduğu avantajları inceliyoruz.
Çapraz Köken Depolama Nedir?
Web tarayıcılarında, farklı kaynaklardan (origin) gelen web uygulamaları, aynı yapay zeka modelini kullansa bile, her biri model dosyalarını ayrı ayrı indirip önbelleğe almak zorunda kalır. Bunun nedeni, tarayıcıların güvenlik ve gizlilik amacıyla önbellekleri kaynağa göre izole etmesidir. Cross-Origin Storage (COS) API'si, bu sorunu çözmek için önerilen yeni bir web standardıdır. COS, dosyaları URL yerine kriptografik bir özet (hash) ile tanımlayarak farklı kaynaklar arasında paylaşımı mümkün kılar. Böylece aynı dosyayı kullanan tüm web siteleri, tek bir kopyayı kullanabilir.
Transformers.js ve COS Entegrasyonu
Transformers.js, tarayıcıda doğal dil işleme (NLP) modellerini çalıştırmak için kullanılan bir JavaScript kütüphanesidir. Örneğin, otomatik konuşma tanıma (ASR) için `pipeline('automatic-speech-recognition')` çağrısı yapıldığında, kütüphane gerekli model dosyalarını (örneğin `Xenova/whisper-tiny.en`) otomatik olarak indirir ve önbelleğe alır. Ancak bu dosyalar, farklı bir kaynaktaki başka bir uygulama tarafından kullanıldığında tekrar indirilir. COS ile bu tekrar ortadan kalkar. Transformers.js, deneysel bir bayrak olan `env.experimental_useCrossOriginStorage = true` ile COS desteğini etkinleştirir. Bu bayrak etkinleştirildiğinde, kütüphane her model dosyası için SHA-256 özetini hesaplar ve dosyayı COS'a kaydeder. Diğer uygulamalar aynı özeti kullanarak dosyaya anında erişebilir.
COS API Nasıl Çalışır?
COS API, `navigator.crossOriginStorage` arayüzü üzerinden çalışır. Bir dosyayı depolamak veya okumak için `requestFileHandle(hash)` yöntemi kullanılır. Eğer dosya daha önce depolanmışsa, `getFile()` ile doğrudan erişilir. Depolanmamışsa, ağdan indirilir ve `create: true` seçeneğiyle COS'a yazılır. Yazma sırasında tarayıcı, dosyanın özetini doğrular; uyuşmazlık durumunda hata verir. Bu sayede bütünlük kontrolü otomatik olarak sağlanır. Ayrıca, geliştiriciler `origins` seçeneğiyle dosyanın hangi kaynaklar tarafından erişilebilir olacağını belirleyebilir:
- `origins: '*'` ile herkese açık hale getirilebilir.
- Belirli bir kaynak listesi verilerek erişim kısıtlanabilir.
- Hiçbir seçenek verilmezse, yalnızca aynı site altındaki alt alan adları erişebilir.
Gizlilik ve Güvenlik Önlemleri
COS, gizlilik risklerine karşı çeşitli önlemler içerir. Örneğin, bir dosyanın varlığını sorgulamak, tarayıcının kullanıcı hakkında bilgi sızdırmasına neden olabilir. Bu nedenle, COS yalnızca yeterli sayıda farklı kaynak tarafından kullanılan dosyaların varlığını doğrular. Nadir dosyalar için, dosya depolanmış olsa bile hata döndürülebilir. Ayrıca, görünürlük seviyesi düşürülemez; bir dosya herkese açık hale getirildikten sonra kısıtlanamaz. Bu, kötü niyetli aktörlerin dosyayı yeniden depolayarak erişimi daraltmasını engeller.
Neden Önemli?
COS API, web tabanlı yapay zeka uygulamalarının performansını ve verimliliğini önemli ölçüde artırabilir. Türkiye'deki web geliştiriciler için bu, özellikle büyük modellerin (örneğin, ses tanıma veya duygu analizi) kullanıldığı uygulamalarda bant genişliği ve depolama tasarrufu sağlar. Ayrıca, kullanıcı deneyimini iyileştirir: model dosyaları önceden indirildiği için uygulamalar daha hızlı yüklenir. COS henüz deneysel aşamada olsa da, Transformers.js gibi popüler kütüphanelerin desteğiyle yaygınlaşması bekleniyor. Geliştiriciler, şimdiden bu API'yi test ederek gelecekteki standartlara hazırlıklı olabilir.