Dosyalar

Pipelogic'te bir File veridir, kod değil. Bir component tipli, sürümlenmiş, konteynerleştirilmiş bir yetenektir; bir File ise component çalıştığında yüklediği model ağırlıkları, veri kümesi, fixture, yapılandırma belgesi veya arşivdir. İkisi kasıtlı olarak ayrı ilkellerdir ve backend graph, buluştukları yerdir.

Bir File aslında nedir

Bir File, workspace'te tipli, adlandırılmış, adreslenebilir bir nesnedir. Bir kez yüklenir, bir kez depolanır, kendi takvimine göre sürümlenir ve bir component image'ine kopyalanmak yerine referansla yeniden kullanılır. Tek bir tipli File kavramı, çok gigabaytlık bir modeli, küçük bir tokenizer'ı, bir CSV fixture'ını, bir Triton model deposunu ve bir YAML yapılandırma belgesini kapsar — ayrı bir "model dosyası" ve "veri dosyası" mekanizması yoktur, yalnızca yapıtın ne olduğunu ve hangi slot'ların onu kabul edeceğini söyleyen bir file_type vardır.

Tanımlayıcı özellik şudur: File ve bağlama ayrıdır. Bir model yüklemek bir workspace yapıtı ve başka bir şey üretmez; yapıt, yalnızca belirli bir backend vertex'indeki belirli bir slot'a bağlandıktan ve o backend deploy edildikten sonra çalışır. Aynı File aynı anda birçok backend'e ve birçok vertex'e bağlanabilir ve onu bir başkasıyla değiştirmek bir graph mutasyonudur — bağlamayı yeniden yönlendir — bir component'i yeniden derleme değil.

Dosyaların neden kendi ilkelleri olduğu

Modellerin, fixture'ların ve yapılandırmaların, component yaşam döngüleriyle örtüşmeyen yaşam döngüleri vardır. Bir component sürümü değişmezdir; bir model yapıtı kendi takvimine göre değiştirilir; bir fixture kümesi bağımsız olarak evrilir. Bunlardan herhangi birini component'e katmak image'i şişirir ve her yapıt değişikliği için bir yeniden yayımlama zorunlu kılar. File'ı ayrı tutmak fazladan bir adıma mal olur — yapıtı kodun içinde göndermek yerine yükle, sonra bağla — ve karşılığında aynı model bir backend içindeki kardeş vertex'ler arasında karşılaştırılabilir, aynı fixture regresyon süitleri arasında yeniden kullanılabilir ve aynı tokenizer birçok modelin yanında durabilir, bunların hiçbiri bir component'i yeniden paketlemeyi gerektirmez.

Üç referans sayfası

Dosyalarla ilgili her şey üç konuya ayrılır, her birinin kendi sayfası vardır:

Bir component bir dosyayı nasıl ister. Bir component, ihtiyaç duyduğu slot'ları worker.file_schema altında ve ürettiği dosyaları worker.generated_file_schema altında bildirir. Bu sözleşme Dosya şeması içindedir.

Hangi dosyaya hangi slot'ta izin verildiği. Her slot ve her yükleme bir file_type taşır. Platform, yüklenen File'ın tipi slot'u karşılamadıkça bir bağlamayı reddeder. Tam değer listesi Dosya tipleri içindedir.

Bir dosyanın nasıl yüklenip eklendiği. Yükleme yapıtı ve tipini kaydeder; bağlama onu bir vertex slot'una ekler ve graph'a yapılandırma varsayılanlarını taşıyabilir. Yaygın uyumsuzluk hataları dahil mekanik Dosya bağlama içindedir.

Zihinsel model

workspace files                       backend graph
───────────────                       ─────────────
                                      ┌────────────┐
   detector.onnx ──(add-file)──▶      │  vertex A  │
   (file_id, type=onnx)               │  ┌───────┐ │
                                      │  │ model │◀┼── detector.onnx
   tokenizer.json ──(add-file)──▶     │  └───────┘ │
   (file_id, type=tokenizer)          │  ┌───────┐ │
                                      │  │ tokn  │◀┼── tokenizer.json
                                      │  └───────┘ │
                                      └────────────┘

İki yarı bağımsız kalır. Yüklenmiş bir File, bir şey onu bağlayana kadar workspace'te bekler; bağlama, deploy zamanında yürürlüğe girer. Dosya destekli bir backend'in yeniden üretilebilir olmasının nedeni budur: bağlama, event-sourced operasyon log'undaki bir girdidir, işaret ettiği File değişmezdir ve yeniden deploy aynı kablajı yeniden oynatır.

İlgili

Bu sayfa yardımcı oldu mu?