Video Backbone'u Dondur, %0.08'ini Eğit, Robot Hareket Etsin 🧊🤖
Published: March 29, 2026
Selamlar. Bu sefer size üç paper'ın nasıl tek bir matruşka bebeğine dönüştüğünü anlatacağım. Ama önce, her zamanki gibi müzik.
🎧 First in first, background music.
Önce Yap, Sonra Konuş 🔨
Ben "önce yap, sonra konuş" adamıyım. Benchmark'lar gelecek. Ama gelene kadar claim'leri küçük tutacağız. Bu yazı bir manifesto değil — üç projenin nasıl birbirine bağlandığının hikayesi.
Üç paper'ın özeti aslında üç cümle:
- Agent loop = Control loop. Aynı döngü chatbot'u da, robot kolunu da yönetiyor.
- Bu döngüyü bir SDK'ya çevirdik. 18 policy, 32 robot, 3 simülatör, dört satır kod.
- Video backbone'u dondurup %0.08 eğiterek competitive policy çıkardık.
Ve hepsi birbirine bağlı.
Loop'un Anatomisi 🔄
Bir chatbot'un döngüsünü yazın:
while not done:
response = model(context, tools)
for tool_call in response:
result = execute(tool_call)
context.append(result)
Bir robotun döngüsünü yazın:
Aynı şey. Algıla → Düşün → Yap → Tekrarla. Strands Agents'ın while-loop'u ile bir robotun kontrol döngüsü arasındaki fark, loop'un içinde ne çalıştığı. Dışarıdan bakınca ikisi de aynı kalıp.
graph LR
subgraph "Agent Loop"
A1[Observe<br/>user message] --> A2[Think<br/>LLM inference]
A2 --> A3[Act<br/>tool calls]
A3 --> A1
end
subgraph "Robot Loop"
R1[Observe<br/>camera + joints] --> R2[Think<br/>policy inference]
R2 --> R3[Act<br/>motor commands]
R3 --> R1
end
style A2 fill:#0969da,stroke:#044289,color:#fff
style R2 fill:#8250df,stroke:#5a32a3,color:#fff
Bu insight, Strands-Robots'un temelini oluşturuyor. Robot, agent'ın bir tool'u. Agent loop, kontrol döngüsünü içine alıyor.
Matruşka Bebekleri 🪆
Neon, Strands-Robots'un policy provider'larından biri. Strands-Robots, Strands Agents'ın tool'larından biri. Strands Agents, loop'un kendisi.
Loop (Strands Agents)
└── Tool: Robot (Strands-Robots)
└── Policy: Neon
└── Backbone: Frozen Video Model (7B)
└── Eğitilen kısım: 6M parametre
└── O da sadece "bu feature → bu hareket" diyor
graph TB
subgraph "En Dıştaki Bebek"
Agent["🗣️ 'Kırmızı küpü al'<br/>Strands Agent"]
end
subgraph "İkinci Bebek"
Robot["🤖 Robot Tool<br/>Strands-Robots"]
end
subgraph "Üçüncü Bebek"
Policy["🧠 Neon VLA<br/>Policy Provider"]
end
subgraph "Dördüncü Bebek"
Backbone["🎬 Frozen Video Model<br/>7B parametre — dokunma!"]
end
subgraph "En İçteki Bebek"
Adapter["🎯 Feature → Joint Açısı<br/>6M parametre — sadece burası eğitiliyor"]
end
Agent --> Robot --> Policy --> Backbone --> Adapter
style Agent fill:#2ea44f,stroke:#1b7735,color:#fff
style Robot fill:#0969da,stroke:#044289,color:#fff
style Policy fill:#8250df,stroke:#5a32a3,color:#fff
style Backbone fill:#bf8700,stroke:#875e00,color:#fff
style Adapter fill:#f85149,stroke:#da3633,color:#fff
Hepsi iç içe geçmiş matruşka bebekleri gibi. En dıştaki bebek sana "kırmızı küpü al" diyor. En içteki bebek servo motorlara açı gönderiyor. Arada dört katman var ama hiçbirini bilmek zorunda değilsin.
Beş satır yeter.
from strands_robots import Robot
from strands import Agent
robot = Robot("so100")
agent = Agent(tools=[robot])
agent("Pick up the red cube")
Neon: Video Backbone'u Dondurmanın Cesareti 🧊
Şimdi gelelim en içteki bebeğe. Neon VLA'nın cesur iddiası şu:
7 milyar parametrelik video modelini hiç eğitme. Dondur. Sadece üstüne 6 milyon parametrelik bir adapter ekle. Feature'ları motor komutlarına çevir.
Neden cesur? Çünkü herkes video modelini fine-tune ediyor. Milyonlarca dolar GPU saati harcıyorlar. Biz dedik ki: bu model zaten videoyu anlıyor — nesnelerin nasıl hareket ettiğini, fizik kurallarını, uzamsal ilişkileri. Bu bilgiyi bozmak yerine kullanmak daha akıllıca.
flowchart LR
subgraph "Geleneksel Yaklaşım"
V1[Video Model 7B] -->|Full Fine-tune<br/>320+ GPU-saat| P1[Robot Policy]
end
subgraph "Neon Yaklaşımı"
V2[Video Model 7B ❄️<br/>FROZEN] -->|Features| A[Adapter 6M<br/>4 GPU-saat]
A --> P2[Robot Policy]
end
style V1 fill:#f85149,stroke:#da3633,color:#fff
style V2 fill:#58a6ff,stroke:#388bfd,color:#fff
style A fill:#2ea44f,stroke:#1b7735,color:#fff
320 GPU-saat yerine 4 GPU-saat. Aynı performans — benchmark'lar gelecek, ama erken sonuçlar cesaret verici.
Analoji: Bitwise Flags Gibi
Trendyol'da order detail sayfasında 190 satır koşul mantığını 5 satıra düşürmüştük bitwise flags ile. Burada da 320 GPU-saat'i 4'e düşürdük. Farklı domain, aynı felsefe: karmaşıklık kütüphanede yaşar, kullanıcının kodunda değil.
Altı Duyu, Bir Robot 👁️👂🤚📡🗣️🦾
Neon tek kameralı değil. Altı modaliteyi birleştiriyor:
| Modalite | Açıklama | Neden Önemli |
|---|---|---|
| 🎬 Video | Ana kamera akışı | Nesne tanıma, hareket planlama |
| 🔊 Audio | Ortam sesleri | Temas algılama, komut anlama |
| 🤚 Dokunma | Basınç sensörleri | Kavrama kuvveti kontrolü |
| 📡 Proprioception | Joint açıları | Kolun nerede olduğunu bilme |
| 🗣️ Dil | Doğal dil talimatları | "Al şunu" |
| 🦾 Action | Önceki hareketler | Temporal tutarlılık |
Çoğu VLA modeli sadece video + dil kullanır. Neon'un farkı, video backbone'unun temporal anlayışını dokunma ve ses ile zenginleştirmesi. Bir robot nesneyi kavrarken hem görüyor, hem hissediyor, hem duyuyor.
graph TB
subgraph "Girdi Modaliteleri"
V[🎬 Video<br/>Frozen backbone]
A[🔊 Audio<br/>Mel spectrogram]
T[🤚 Touch<br/>Pressure map]
P[📡 Proprioception<br/>Joint states]
L[🗣️ Language<br/>Instruction]
H[🦾 Action History<br/>Previous cmds]
end
F[🔀 Multi-Modal<br/>Fusion Layer]
V --> F
A --> F
T --> F
P --> F
L --> F
H --> F
F --> Action[🎯 Action Chunk<br/>16 timesteps × DoF]
style V fill:#58a6ff,stroke:#388bfd,color:#fff
style F fill:#8250df,stroke:#5a32a3,color:#fff
style Action fill:#2ea44f,stroke:#1b7735,color:#fff
Neden Bu Önemli? 🌍
Üç projenin birleşim noktasına bakınca:
| Katman | Proje | Ne Yapıyor |
|---|---|---|
| Loop | Strands Agents | Agent döngüsü — algıla, düşün, yap |
| Tool | Strands-Robots | 18 policy, 32 robot, 5 satır |
| Policy | Neon VLA | Frozen backbone + 6M adapter |
Her biri tek başına faydalı. Ama birlikte? Doğal dille konuştuğun bir agent, herhangi bir robotu, herhangi bir policy ile kontrol ediyor. Ve o policy'nin eğitimi 4 GPU-saat sürüyor.
Bu, robotiklerin "pip install" anı. Tıpkı web development'ta bir framework'ü npm install edip hemen kullanmaya başladığın gibi:
from strands_robots import Robot
from strands import Agent
robot = Robot("so100")
agent = Agent(tools=[robot])
agent("Pick up the red cube")
Teknik Detay: Adapter Mimarisi 🔧
Meraklılar için. Neon'un adapter'ı basit ama etkili:
Video Backbone (7B, Frozen)
│
▼
[Feature Extraction] ── temporal features (T×D)
│
▼
[Cross-Modal Attention] ── audio, touch, proprioception inject
│
▼
[Action Head MLP] ── D → DoF × chunk_size
│
▼
Joint açıları (16 timestep × 6 DoF = 96 değer)
Toplam eğitilen parametre: ~6M. Toplam model: ~7B. Eğitilen oran: %0.08.
Bu, LoRA'nın VLA versiyonu gibi düşünülebilir. Büyük modeli bozmadan, küçük bir adapter ile yeni bir beceri öğretiyorsun.
Dürüstlük Notu
Benchmark'lar henüz yayınlanmadı. "Competitive" derken, internal testlerde full fine-tune modellere yakın performans gördüğümüzü kastediyorum. Resmi karşılaştırmalar gelecek. Bu yazı bir benchmark paper değil, bir mimari hikayesi.
Sokak Sanatçılığına Devam 🎷
PauSiber'de 11 yıl boyunca 1000+ seminer verdik. Find Mentor'da 3000+ kişiyi eşleştirdik. Strands Agents 14M+ download'a ulaştı. Hep aynı şeyi yapıyoruz: karmaşık şeyleri basitleştirip, paylaşıp, herkesin erişebileceği hale getiriyoruz.
Neon da öyle. Video backbone'u dondurmak çılgınca bir fikir gibi görünebilir. Ama bazen en cesur şey, elindekine dokunmamak ve sadece eksiği tamamlamaktır.
Bitwise flags'te 190 satırı 5'e düşürmüştük. Burada 320 GPU-saat'i 4'e düşürdük. Farklı domain, aynı felsefe.
Robotlar artık tek gözle yaşamak zorunda değil. Video görüyorlar. Fiziği anlıyorlar. Ve bunu yapmak için tüm modeli eğitmenize gerek yok — sadece %0.08'ini.
Başla 🚀
# Strands Agents + Robots
pip install strands-agents strands-robots
# Neon VLA (yakında)
pip install neon-vla
from strands_robots import Robot
from strands import Agent
robot = Robot("so100")
agent = Agent(tools=[robot])
agent("Pick up the red cube")
Beş satır. Bir agent. Bir robot. Frozen backbone. %0.08 eğitim. Doğal dil.
Afiyet olsun! 🍽️
Neon açık kaynak olarak yayınlanacak. pip install neon-vla — MIT lisansı.
Paper'lar: Strands-Robots | Neon VLA
— Çağatay Çalı, Karagümrük'ten sevgilerle 🏴