Strands Agents ile Robot Veri Döngüsü: Kayıt, Eğitim ve Dağıtım Tek Noktada
Strands Robots ve Hugging Face Storage Buckets ile robot veri toplama, eğitim ve dağıtım döngüsünü tek bir ajan üzerinden yönetin. Xet tabanlı yedekleme, yalnızca değişen baytları aktararak maliyeti düşürür; veriler Hub'dan akışla okunur, eğitim ve dağıtım aynı arayüzle yapılır.
Giriş: Robot Veri Döngüsü
Robotikte veri toplama, model eğitimi ve dağıtımı genellikle birbirinden kopuk süreçlerdir. Ancak Strands Robots ve Hugging Face Storage Buckets ile bu döngüyü tek bir ajan üzerinden yönetmek mümkün. AWS'nin açık kaynak SDK'sı olan Strands Robots (Apache 2.0), robot soyutlamalarını, simülasyonu ve LeRobot yığınını AgentTools olarak sunar. Bu araçlar, tek bir Strands ajanında birleştirilerek kayıt, eğitim ve dağıtım aşamaları kesintisiz çalışır.
Bu makalede, bir robotun gösterimini kaydedip Hugging Face Hub'a aktardıktan sonra, bu veriyi sürekli işleyen bir döngü kurmayı ele alacağız. Gün boyunca bölümler toplayacak, büyüyen veri seti üzerinde bir politika eğitecek, bunu donanıma dağıtacak ve sonraki iyileştirmeler için veriyi geri çekeceğiz. Bu döngüyü her gün çalıştırdığınızda, tekrarlanan bayt aktarımları için ödeme yapmaya başlarsınız; ancak doğru araçlarla bu maliyeti en aza indirebilirsiniz.
Storage Buckets ile Maliyet Optimizasyonu
Hugging Face Storage Buckets, değiştirilebilir, sürümlenmemiş ve Xet destekli bir nesne depolama deposudur. Bu depolar, veri seti depolarınızın yanında aynı hf:// ad alanında yer alır ve mevcut hf CLI ile kullanılır. Böylece, kayıt ile eğitim arasındaki süreçte verilerinizi tutan çalışma katmanı haline gelir.
Xet, içerik tanımlı parçalama (content-defined chunking) kullanarak yüklemelerinizi bayt düzeyinde tekilleştirir. Parça sınırları içeriğe göre belirlendiğinden, birkaç bayt eklemek yalnızca o parçayı değiştirir ve sonraki tüm sınırları kaydırmaz. Hugging Face ölçümlerine göre, bu yöntem Hub genelinde yükleme başına aktarılan veriyi yaklaşık dört kat azaltır. Örneğin, 500 MB'lık bir yüklemede baytların %1'ini değiştirmek yalnızca 5.5 MB, %5'i 27.5 MB ve %10'u 55 MB aktarım gerektirir. Bu, özellikle gün boyunca sürekli veri toplayan robot sistemleri için büyük bir tasarruf sağlar.
Veri Kaydı ve Senkronizasyon
Strands Robots, LeRobot'un veri seti formatını kullanır. Bu format, Hub'da 90.000'den fazla veri seti ve 8.000'den fazla yayıncı tarafından kullanılmaktadır. Bir gösterimi kaydetmek için doğal dil komutu yeterlidir. Örneğin, `agent("Create a world with the so100 robot, add a red cube and a front camera, start recording...")` komutu, sahneyi kurar, kamerayı ayarlar ve kaydı başlatır. Kayıt bittiğinde, `sync_dataset_to_bucket()` ile veriler bir Storage Bucket'a aktarılır. Bu senkronizasyon, yalnızca değişen baytları yükler; böylece her gün yapılan senkronizasyon maliyeti düşer.
Fiziksel bir SO-101 robotu için LeRobot'un `lerobot-record` CLI aracı kullanılabilir. Bu araç, lider-takipçi kurulumunu yönetir ve verileri aynı formatta diske kaydeder. Ardından aynı `sync_dataset_to_bucket()` çağrısı ile veriler bucket'a aktarılır. Bu sayede, toplama işlemleri tek bir yerde birikir ve yayınlanan depolar yalnızca seçtiğiniz sürümleri içerir.
Akışla Eğitim ve Dağıtım
Eğitim için verileri indirmek yerine, doğrudan Hub'dan akışla okumak mümkündür. LeRobot'un `StreamingLeRobotDataset` sınıfı, verileri parça parça okur ve video karelerini anında çözer. Bu sayede GPU'lar boşta beklemez; ilk batch ile eğitim başlar. `stream_dataset()` fonksiyonu, bir bucket'tan veri okumak için kullanılır. Örneğin:
```python reader = sim.stream_dataset("my-org/robot-fave/cube_pick", repo_type="bucket") for batch in reader.dataloader(batch_size=64): loss, _ = policy(batch) loss.backward() ```
Eğitim tamamlandığında, `create_policy()` ile kontrol noktası yüklenir ve `mode="real"` parametresiyle fiziksel robota dağıtılır. Böylece aynı `Robot()` nesnesi hem kayıt hem de dağıtım için kullanılır. Bu, veri döngüsünü tek bir arayüz üzerinden yönetmeyi sağlar.
Neden Önemli?
Bu yaklaşım, Türkiye'deki robotik ve yapay zeka topluluğu için önemli fırsatlar sunuyor. Veri toplama ve eğitim maliyetlerini düşürmek, özellikle kaynakları kısıtlı araştırma grupları ve KOBİ'ler için kritik. Ayrıca, açık kaynak araçların kullanımı, yerel ekosistemin küresel standartlarla uyumlu hale gelmesini sağlıyor. Hugging Face'in sağladığı bu altyapı, robotik alanında çalışan geliştiricilerin daha hızlı prototipleme yapmasına ve üretim sistemlerine geçişini kolaylaştırıyor. Bu döngü, fiziksel yapay zeka (physical AI) uygulamalarının yaygınlaşmasına katkı sağlayacak.
Güvenlik ve Pratik Öneriler
Veri döngüsünü gerçek verilerle çalıştırırken dikkat edilmesi gereken bazı noktalar var. Öncelikle, ajanlara yalnızca güvenilir kaynaklardan veri beslenmeli; aksi halde prompt injection saldırılarına açık olabilir. Ayrıca, eğitim verisi bir güven sınırıdır; toplama verisi yazan kimlik bilgisi, eğitim işinin okuduğu kimlik bilgisinden ayrı tutulmalıdır. Her çalıştırma için benzersiz bir `run_id` kullanmak, verilerin izlenebilirliğini sağlar. Bucket'lar sürüm tutmadığı için, kalıcı olması gereken veriler için `push_to_hub()` ile sürümlü bir veri seti deposuna aktarım yapılmalıdır. Ayrıca, yalnızca güvendiğiniz Hugging Face organizasyonlarından modeller yükleyin ve `STRANDS_TRUST_REMOTE_CODE=1` ortam değişkenini bilinçli olarak ayarlayın.
Bu döngüyü denemek isteyenler için örnek notebook GitHub'da mevcuttur: `examples/notebooks/05_streaming_data_loop.ipynb`. Tüm hücreler simülasyonda çalışır ve GPU, Docker veya Hugging Face kimlik bilgisi gerektirmez. Bu sayede, herkes kendi bilgisayarında bu akışı deneyimleyebilir ve robotik veri yönetiminde yeni bir çağın parçası olabilir.