Kalıcı bir kernel’de veri keşfetme
Bu kılavuz, bir ajana pahalı bir şeyi bir kez yükletip ardından ona birkaç soru sordurmayı — her soruda yükleme bedelini ödemek yerine — nasıl yapacağınızı gösterir.
eval aracı kalıcı bir yorumlayıcı çalıştırır. Değişkenler, içe aktarmalar ve yüklenen veriler çağrılar arasında yaşamaya devam eder.
Neden yalnızca bir betik çalıştırmıyoruz
Bölüm başlığı “Neden yalnızca bir betik çalıştırmıyoruz”Tek atımlık bir python -c, her soruda kurulum bedelini öder. Bir dataframe yüklemek saniyeler ve yüz megabayt tutar; grafiğini çizmekse milisaniyeler. Her soru bu yüklemeyle başladığında ajan, sorması gerekenden daha az soru sorar — ve her yanıt, yeniden ayrıştırmak zorunda kaldığı metin olarak geri döner.
Bir kez yükleyin, sonra sorun
Bölüm başlığı “Bir kez yükleyin, sonra sorun”
data/runs.csvdosyasını yükle ve bana ajan bazında p95 süresini söyle.
import pandas as pdruns = pd.read_csv("data/runs.csv")len(runs)Son ifade, bir notebook’un yaptığı gibi yankılanır; böylece len(runs) satır sayısını bir print olmadan bildirir.
Ardından, ayrı bir çağrıda:
runs.groupby("agent")["duration_ms"].quantile(0.95).sort_values()runs hâlâ yüklüdür. Bir pandas frame’i, bir repr yerine tablo olarak işlenmiş hâlde geri döner.
Grafikler sohbete düşer
Bölüm başlığı “Grafikler sohbete düşer”import matplotlib.pyplot as pltruns.groupby("agent")["duration_ms"].mean().plot.bar()Şekiller hücreden sonra yakalanır ve görüntü olarak döndürülür; transkript bunları işler. Grafiği siz de görürsünüz, ajan da.
Şekiller yakalandıktan sonra kapatılır. Toplanmayan bir şekil, sonraki hücre tarafından da yeniden çizilip yeniden gönderilirdi; bu yüzden beş hücrelik bir oturum ilk grafiği beş kez yayardı.
Zaten yazacağınız kalıplar
Bölüm başlığı “Zaten yazacağınız kalıplar”Bunlar hata vermek yerine düz koda dönüştürülür:
| Yazdığınız | Ne olur |
|---|---|
%pip install x |
pip’i çalıştırır, ardından modül önbelleğini temizler; böylece sonraki import onu görür |
%cd path |
os.chdir |
!command |
Çıktısı yakalanan bir alt süreç |
%%bash |
Hücrenin geri kalanı, bir shell betiği olarak |
%%timeit |
1000 zamanlı çalıştırma |
Asıl önemli olan, %pip’in önbelleği boşaltmasıdır: canlı bir yorumlayıcıya kurulum yapmak, zaten içe aktarılmış bir modül için hiçbir şey değiştirmez; bu yüzden o olmadan, az önce kurduğunuz sürüm çalışmakta olan sürüm değildir.
Kendi araçlarınızı bir hücrenin içinden çağırma
Bölüm başlığı “Kendi araçlarınızı bir hücrenin içinden çağırma”paths = tool("find", {"pattern": "**/*.dart", "path": "lib"})for path in paths.splitlines()[:100]: contents = tool("read", {"path": path}) ...tool(name, args), ajanın kendi araç kaydına yeniden girer. Bu da bir hücrenin yüzlerce dosyaya dağılabileceği veya task üzerinden devredebileceği anlamına gelir; modelin her öğe için bir tur harcamasına gerek kalmaz.
Köprü üzerinden gelen bir çağrı, sürdüğü sürece hücrenin zaman aşımını askıya alır. Bütçe, duvar saatini değil hareketsizliği ölçer — alt ajanlara dağılan ve dört dakika bekleyen bir hücre takılmış sayılmaz ve onu dağıtımın ortasında öldürmek tüm kernel durumunu kaybettirirdi.
Baştan başlamak
Bölüm başlığı “Baştan başlamak”eval(code: "…", reset: true, description: "Start a clean interpreter")Yorumlayıcıyı atar ve temiz bir tane başlatır. Yüklenmiş her şey gitmiş olur; mesele de zaten bu.
Kernel nerede çalışır
Bölüm başlığı “Kernel nerede çalışır”Konuşmanın bir enclosure’ı varsa orada, yoksa ana makinede çalışır.
Güvenilmeyen bir depoyu okuyan bir model tarafından sürülen kalıcı bir yorumlayıcı, yalnızca enclosure içinde çalıştırmanın tam da var olma sebebidir: tek atımlık bir bash çağrısı en azından biter, oysa bir kernel hatırlayan bir kabuktur.
Bunun için bir enclosure başlatmaz — bir rig sekmesinin kendiliğinden başlamasını engelleyen kuralın aynısı. Kernel’in enclosure içinde olmasını istiyorsanız, önce konuşmanın shell’ini açın. Bkz. Bir ajana test için makine verme.
Sınırlar
Bölüm başlığı “Sınırlar”- Kernel başına aynı anda tek hücre. Tek bir yorumlayıcıda yarışan iki hücre, iki programın iki yarısının tek bir ad alanında iç içe geçmesidir.
- Çıktı sınırlandırılır. Döngü içinde print yapan bir hücrenin çıktısı, bağlam penceresini doldurmasına izin verilmek yerine kesilir.
- Hücre başına dört görüntü. Bir grafik döngüsü her yinelemede bir şekil üretebilir ve her görüntü, onu taşıyan istekte büyük sabit bir maliyettir.
- Kernel, çalıştırmayla birlikte ölür. Konuşma bittikten sonra hâlâ bir dataframe tutan kernel bir sızıntıdır.
İlgili
Bölüm başlığı “İlgili”- Sandbox ve güvenlik — burada “enclosure” ile ne kastediliyor
- Bir ajana test için makine verme — enclosure’ı açmak
- Yerleşik ajan araçları — argümanlar