İçeriğe geç

Konuşma geçmişi

Uzun bir konuşma kaçınılmaz bir duvara toslar: modelin bağlam penceresi. Bu sayfadaki her şey o duvar yüzünden var ve işin ilginç kısmı neyin atıldığı, neyin saklandığı ve neyin geri alınabildiğidir.

Bunlar birbirinin alternatifi olmaktan çok, en ucuzu en başta olan bir merdivendir.

Mekanizma Maliyet Korur Kaybeder
Eleme Hiçbir şey Anlatının her kelimesini Olaysız eski araç sonuçlarını
Görsel boşaltma Hiçbir şey Çevrelerindeki metni Eski ekran görüntülerini
Anlık görüntüler Hiçbir şey Her kelimeyi, piksel olarak Görme yetisi olmayan bir model için okunabilirliği
Özet Bir model çağrısı Bir anlatı Seçmediği ayrıntıları

Eleme ve boşaltma ilk sırada çalışır çünkü bedavadır ve önemli olan anlamda kayıpsızdır: kimsenin yeniden okumayacağı yığını atarlar.

Özet, dördü arasında bir model çağrısı harcayan tek yöntemdir ve neyin önemli olduğuna sizin adınıza karar veren tek yöntemdir. İkisi de gerçek birer maliyettir. Çağrı daha ilginç olanıdır, çünkü ne zaman yapıldığı önemlidir.

Sıkıştırma genellikle duvarın öncesinde, bir eşik değerde çalışır. Ama aynı zamanda tepkisel olarak, sağlayıcı bir isteği fazla büyük diye reddettikten sonra da çalışır — sezgisel tahmin, sağlayıcının gerçekte ölçtüğünü eksik saymıştır. Bu durumda özetleyen bir sıkıştırıcı, bağlamı küçültmek için bir istek yapmak zorundadır ve yaptığı istek tam da az önce taşan istektir.

Anlık görüntü sıkıştırması, atılan geçmişi yoğun piksel glif sayfalarına işler ve görüntü olarak geri verir.

Dayanak noktası bir faturalama tuhaflığıdır: görme yetisi olan bir model, bir görüntü için içindeki karakter sayısıyla hiçbir ilgisi olmayan sabit ya da alanla orantılı bir ücret alır. Atılan on iki bin karakterlik konuşma, on iki bin karaktere karşılık gelen metin token’ı kadar maliyetlidir. Aynı karakterler tek bir sayfaya işlendiğinde maliyeti tek bir görüntüdür.

Bunu sadece zekice olmaktan çıkarıp değerli kılan şey, model çağrısı, anahtar ve ağ gerektirmemesidir. Taşma kurtarma sırasında her zaman kullanılabilen tek stratejidir.

Yeniden kurma biçimi şöyledir: baş kısmı birebir, orta kısmı görüntülenmiş, son kısmı birebir. Baş kısım, görev ve sonraki her şeyin kendisine atıfta bulunduğu kısıtlardır; son kısım ise işin o anda bulunduğu yerdir. Orta kısım en az yeniden okunan ve en pahalıya mal olan kısımdır.

Anlık görüntüler her geçişte saklanan kaynak metinden yeniden işlenir, asla önceki geçişin piksellerinden değil. Bir görüntüyü görüntülemek, glifleri her sıkıştırmada bir nesil bozar ve sonunda hiçbir şey onları okuyamaz.

Geçmişte her harness çalıştırması boş bir geçmişle başlardı ve sürekliliği istemdeki bir <context> bloğundan yeniden kurardı — konuşmanın kendisinden değil, konuşmanın bir özetinden. Bundan üç sonuç doğdu:

  • Devam ettirme, yeniden anlatmaktı. Model kendi önceki akıl yürütmesini ya da araçlarının döndürdüğü gerçek baytları hiç görmezdi; bunların yalnızca bir tarifini görürdü.
  • Geri sarma süreçle birlikte ölürdü. Bir checkpoint, canlı ileti listesindeki bir dizindir; dolayısıyla bir yeniden başlatma, modelin koyduğu her etiketi kaybederdi.
  • Yeniden deneme, “yeniden denenecek bir şey yok” ile “yüklenmiş bir şey yok” arasındaki farkı göremezdi. Yeniden başlatmadan sonra başarısız tur her iki durumda da canlı durumdan silinmiş olurdu.

Üçünün de çözümü transkripti kalıcı hale getirmektir. Transkript her tur sınırında kaydedilir ve asla turun ortasında kaydedilmez: bir araç çağrısı ile sonucu arasında yakalanan bir geçmişi hiçbir sağlayıcı kabul etmez; dolayısıyla o anda yaşanan bir çökme, yeniden oynatılamayacak yarım bir tur yerine önceki turu geri yükler.

Devam ettirilen bir çalıştırma en yeni iletilerine kadar kırpılır ve kesim, öksüz kalmış bir araç sonucuna denk gelmeyen bir sınırda yapılır — çağrısı kırpılıp atılmış bir sonuç, sağlayıcıların doğrudan reddettiği bir istektir ve gönderilemeyen bir transkript, kısa olandan daha kötüdür.

Her ileti, kendisinin devamı olduğu iletiyi kaydeder ve her konuşma geçerli dal ucunu adlandırır. Tüm özellik bu tek karardan ibarettir.

Dallandırma hiçbir şey yazmaz. Yalnızca işaretçiyi taşır. Bıraktığınız yol hâlâ oradadır; dolayısıyla geri dönmek bir geri yükleme değil, bir işaretçi taşıma işlemidir — ve yeniden çalıştırmak için bir istemi düzenlemek, karşılaştırdığınız yanıtı size artık kaybettirmez.

Bu olmadan, geri gitmenin her biçimi iletileri gizlemek ya da silmek zorundadır; gizlemek ise bir sonraki okuyucunun içini göremeyeceği bir yalandır.

Dal Fork
Ne olur İşaretçi taşınır Yol kopyalanır
Nereye gider Aynı konuşma Yeni bir konuşma
Maliyet Hiçbir şey Dalın bir kopyası

Fork, satırları paylaşmak yerine yeni kimliklerle kopyalar. Satırları paylaşan iki konuşma birbirinin sonraki iletilerini gösterirdi ki bu, bir fork’un asla yapmaması gereken tek şeydir.

Çalıştırma sırasındaki checkpoint / rewind ikilisi temiz bir tur sınırını işaretler ve bir keşiften sonra oraya döner, bir özet tutar. Checkpoint’ler transkriptle birlikte kalıcı hale getirildiği için modelin yeniden başlatmadan önce koyduğu bir etiket hâlâ konulduğu yere iner. Hedefi bir kırpma sırasında ayakta kalmayan bir checkpoint düşürülür, kırpılıp yerleştirilmez — “etiketin olduğu yere” sarıp başka bir yere inmek, tam da bir etiketin engellemek için var olduğu başarısızlıktır.