dotFly: Mo phong nao ruoi gi am bang C#

Trong video mo dau, mot con ruoi gi am bay quanh phong khach, tim cach di theo dam mui, dap xuong bat duong va vươn voi de an. Huong re khi gap vat can, mui dang manh hon hay yeu di, gio den tu phia nao, va vat ma no dap xuong co vi duong hay khong deu duoc dieu khien boi he than kinh trung uong day du cua mot con ruoi gi am that: 166.700 neuron va 24,9 trieu synapse, duoc noi dung dung nhu anh kinh hien vi dien tu ghi lai, mo phong theo thoi gian thuc bang C# thuan tuy tren mot laptop.

Well… gan dung. Va chinh cai “gan dung” nay la chu de cua bai viet.

Chuyen nay co gi dang chu y?

Ngay 3 thang 9 nam 2026, Google Research va HHMI Janelia cong bo MaleCNS, connectome cua mot con ruoi gi am duc truong thanh. Day la so do ket noi day du cua nao va “day than kinh bung”, bo phan truyen tin hieu giua nao va co the.

Chi trong vai ngay, Internet da cho nao ruoi choi Doom, choi Super Mario 64, nhay qua xuong rong, di bo trong trinh duyet va ngoi tren man hinh Mac. Toi bi cuon vao chu de nay. Cung nhu voi dotLLM, cach tot nhat de hieu mot he thong AI doi voi toi la tu xay dung no. Vi the toi tao ra dotFly: mot “inference engine” .NET native cho connectome cua ruoi gi am, du nhanh de chay trong vong lap game Godot. Khong Python, khong wrapper thu vien native, chi dung CPU.

Bai viet giai thich connectome la gi va no duoc tao ra nhu the nao; “mo hinh nao ruoi” ma moi nguoi dang chay thuc su la gi va khong phai la gi; cac demo dang lam gi; dotFly thuc thi bang C# ra sao; cung cac benchmark va gioi han trung thuc cua toan bo cach tiep can.

Vay viec nay co dao duc khong?

Neu day thuc su la mo phong mot bo nao that, mot cau hoi lap tuc xuat hien: con ruoi mo phong co dang chiu kho khi dam vao tuong trong Mario khong? Mot so nguoi da dat cau hoi nay tren Reddit va Hacker News.

Cau tra loi can phan biet ro nhung gi dang duoc mo phong. Theo mot nghia nao do, day la nao that: day noi duoc do tu mot con vat that, den tung neuron va tung synapse. Dong thoi, no rat xa mot bo nao dang song. Mo hinh bo qua phan lon hoa hoc cua nao, nhieu cach giao tiep chi tiet giua cac neuron, va moi thu xay ra ben trong tung neuron. Khong co hormone, trang thai noi tai hay hoc tap. Gan nhu chi co “mot trong so cho ca 25 trieu synapse”. Cac demo “choi game” dung bo chuyen doi viet tay, co the khien bat ky he dong luc phi tuyen nao trong nhu dang choi game.

Khong co gi trong mo hinh nay chung minh rang ca the duoc quet, ky uc cua no, hay bat ky thu gi giong trai nghiem chu quan da duoc bao ton. Vi vay, toi khong nghi chung ta da tao ra “thi nghiem tan nhan nhat co the”. Tuy nhien, su kho chiu nay la loi nhac huu ich rang can mo ta chinh xac cac demo dang lam gi.

Connectome la gi?

Ba khai niem la du:

  • Connectome: so do “day noi” duoc tai tao, cho biet neuron nao noi voi neuron nao, co bao nhieu diem tiep xuc synapse va dung chat truyen tin nao.
  • Neural model: cac phuong trinh khien so do day noi hoat dong. Ban than connectome chi la mot do thi, no khong tu tinh toan.
  • Embodiment: giao dien duoc thiet ke giua mo hinh va mot co the, game hay the gioi.

Internet da tai ve so do day noi, sau do them dong luc hoc va giao dien. No khong tai ve mot ban thuc thi dong bang cua mot con ruoi dang song.

Connectome duoc tao ra nhu the nao?

  • 2018: Zheng va cong su cong bo tap anh kinh hien vi dien tu day du dau cua ruoi cai truong thanh, goi la FAFB. Day chi la anh: mot khoang 100 TB cac lop cat.
  • 2024: nhom FlyWire cong bo tai tao day du bo nao do, gom khoang 140.000 neuron va 50 trieu synapse.
  • 2024: Shiu va cong su cong bo mo hinh tinh toan dau tien cho toan bo bo nao va doi chieu no voi thi nghiem that. Day la mo hinh than kinh ma phan lon demo hien nay su dung.
  • 2025–2026: MaleCNS quet mot con ruoi duc truong thanh nam ngay tuoi, ma mau Z0720-07m, gom nao, co va day than kinh bung. Mau duoc co dinh bang aldehyde, nhuom kim loai nang, dat trong nhua, cat thanh 66 khoi day khoang 20 micromet va chup bang SEM dung chum ion hoi tu o do phan giai 8 x 8 x 8 nm.

Bay thiet bi tuy chinh da tao ra khoang 160 teravoxel va mat khoang 13 thang de chup anh. Mang flood-filling cua Google tach neuron, bo phan phat hien tu dong tim synapse, con ResNet50 du doan chat truyen tin tu cac vung anh kinh hien vi. Sau do, 29 chuyen gia da danh soat va gan chu thich, tong cong khoang 44 nam cong.

Ket qua gom 166.700 neuron, 11.710 loai te bao, 25,6 trieu canh co huong va 124 trieu diem tiep xuc synapse. Du lieu MaleCNS v1.0 duoc phat hanh trong nam 2026.

Connectome khong phai la gi?

Connectome la “anh chup” cua mot bo nao da chet, bi cat va nhuom kim loai. No khong phai fMRI va cung khong phai ban ghi dien cuc tu nao dang song. No khong do:

  • dien the mang hay bat ky hoat dong nao;
  • cuong do chuc nang cua synapse, ma chi dem so diem tiep xuc;
  • anh huong cua hormone;
  • thu gi con ruoi da hoc, ghi nho hay cam nhan.

Day la mot so do day noi rat tot, kem theo nhan chat truyen tin duoc du doan cho tung neuron.

Dau vao va dau ra nam o dau?

Moi neuron trong mo hinh co nhan chu thich: loai te bao nhu LC4, T4a, MN9, DNp04, lop, phia va vi tri. Cac nhan nay duoc gan boi chuyen gia dua tren hinh thai, vi tri, cach noi va tai lieu nghien cuu.

  • LC4 phan ung voi vat the dang phong to va tien gan.
  • T4a-d phan ung voi chuyen dong theo bon huong.
  • ORN_DM1 phan ung voi mot mui cu the.
  • GRN phan ung voi duong.
  • MN9 la neuron van dong giup vươn voi.
  • DNp04 va Giant Fiber la neuron di xuong dieu khien phan ung tron chay.

Neuron cam giac la dau vao: te bao cam quang, cam mui, cam vi, cam chuyen dong va cam cham. Neuron di xuong va neuron van dong la dau ra: khoang 1.300 neuron di xuong truyen lenh tu nao den day than kinh bung, con neuron van dong dieu khien co.

Vi du voi phan ung don gian “co thu dang tien lai, hay tranh di”:

  • Mot diem toi phong to trong mat trai.
  • Cac thuc the quang hoc R1-R6 kich hoat.
  • Vung lamina va medulla cua thuy nao thi giac xu ly tin hieu.
  • LC4 trai nhan ra “co thu dang tien gan”.
  • DNp04, DNp02, DNp11 va Giant Fiber duoc kich hoat.
  • Day than kinh bung dieu khien co canh va co chan.
  • Ruoi cat canh va re khoi vat the.

Trong mot thi nghiem, 71 neuron LC4 trai duoc kich bang spike ngau nhien o tan so 120 Hz trong mot giay. Sau do, 4.792 neuron hoat dong trong tong so 166.700 neuron. Cac neuron dung dau danh sach la DNp04 trai o 308 Hz, Giant Fiber o 276 Hz, DNp02 o 256 Hz va DNp11 o 244 Hz. Day chinh la duong tron chay duoc mo ta trong tai lieu nghien cuu. Khong ai can lap trinh rieng rang LC4 noi voi DNp04; ket noi da nam san trong do thi.

Mo hinh ma cac demo su dung: Shiu et al. 2024

Do thi khong tu lam gi. Shiu va cong su lam cho no hoat dong bang loai neuron don gian nhat co the: moi neuron la mot leaky integrate-and-fire point neuron, viet tat LIF.

Moi neuron chi con mot gia tri la dien the mang. Spike den day dien the len hoac xuong, sau do dien the ro ri ve gia tri nghi. Khi vuot nguong, neuron phat spike va dat lai trang thai. Do la toan bo co che.

Trong phuong trinh, connectome xuat hien qua do lon cua moi spike. Moi canh tu neuron i den neuron j co trong so:

w_ij = sign(NT_i) * n_ij * w_syn

n_ij la so diem tiep xuc giua hai neuron, duoc dem tu anh kinh hien vi. w_syn co cung mot gia tri cho ca 25 trieu synapse: 0.275 mV moi diem tiep xuc. Day la tham so duoc hieu chinh duy nhat cua toan bo mo hinh.

Acetylcholine chu yeu kich thich neuron, nen co dau +1. GABA va glutamate uc che, nen co dau -1. Dopamine, octopamine va serotonin trong thuc te la cac chat dieu bien, nhung mo hinh LIF khong the bieu dien vai tro nay. Shiu va cong su don gian hoa chung thanh chat kich thich +1. Day la quy uoc mo hinh, khong phai sinh ly hoc: gan +1 cho neuron dopamine khong co nghia la da mo phong phan thuong hay hoc tap.

Cac nha nghien cuu dung mo hinh de du doan “neu kich hoat nhung neuron nay thi nhung neuron kia se phat”. Ho da kiem tra 164 du doan bang quang di truyen va ghi anh calcium tren ruoi that. Ket qua 91 phan tram chi co nghia la 91 phan tram trong 164 du doan ve mach an uong va ve sinh, khong phai 91 phan tram cua toan bo hanh vi ruoi.

Connectome co dinh, khong duoc huan luyen

Trong so duoc lay tu so cap neuron, synapse va so diem tiep xuc. Khong ai huan luyen mang nay de choi Mario. Neu fit 25 trieu trong so theo diem game, ta khong con co “bo nao cua ruoi” nua, ma chi co mot mang than kinh bat dau tu mot do thi co hinh dang giong nao ruoi.

Vi vay, van de cot loi van la: kich hoat dau vao va quan sat dau ra. Dua spike Poisson 150 Hz vao neuron cam duong, xem neuron nao trong 127.000 neuron con lai bat dau phat. Tat mot neuron va xem dieu gi thay doi. Do cung la ly do mo hinh co gia tri: mot mo hinh mach than kinh co the lap trinh va kiem thu, trong do mot gia thuyet co the tro thanh mot lan chay cu the.

Cac demo “nao ruoi choi X” dang lam gi?

Moi demo gom ba tang:

  • The gioi hoac game tao ra trang thai.
  • Encoder bien trang thai thanh tan so phat cua neuron dau vao.
  • Connectome va dong luc LIF xu ly tin hieu.
  • Readout doc hoat dong cua neuron dau ra.
  • Decoder bien tan so phat thanh thao tac trong game.

Phan day noi va dong luc duoc do tu du lieu. Phan khac biet giua cac demo nam o adapter: encoder anh xa pixel hoac trang thai game vao neuron thi giac, con decoder anh xa neuron di xuong vao phim bam hay chuyen dong co the. Phan lon tri thong minh co ve xuat hien nam trong hai adapter nay.

Xenova’s Fruit Fly Simulation

Demo nay chay day du 166.700 neuron MaleCNS tren WebGPU trong trinh duyet va dieu khien mot con ruoi 3D. Nguoi dung co the to kich thich len neuron hoac chon preset. “Walk” kich LC9 hai ben, “turn left” kich LC9 va DNa02 ben trai, con “fly” kich LC4 hai ben.

Dau ra doc mot so neuron di xuong nhu DNp09, DNg100 va DNg97 cho toc do di; DNa02, DNa11 va DNg13 cho re trai phai; MDN cho lui; DNp01 cho bay tron chay. Tuy nhien, preset re kich truc tiep neuron dau ra DNa02, vi tin hieu thi giac don thuan qua yeu. Neu cat het ket noi ben trong nao, con ruoi van co the re. Day van la mot cong cu huu ich de quan sat hoat dong day noi voi it adapter.

Fly Dino

Fly Dino dung mot mach con 80 neuron: 32 neuron phat hien thi giac va 16 neuron di xuong, cung cac te bao nam giua. Mo hinh la dang tan so lien tuc dung tanh, khong phai LIF. Tam dac trung game nhu khoang cach, kich thuoc va toc do vat can duoc dua vao neuron thi giac, khong phai anh pixel.

Hoat dong cua 16 neuron dau ra duoc dua vao mot mang than kinh nho gom 243 so, sau do chon Run, Jump hoac Duck. Mang nho nay duoc huan luyen qua 15.680 van game, trong khi mach ruoi khong thay doi. Day la reservoir computing: nao duoc dung nhu mot phep bien doi phi tuyen co dinh, con chi co anh xa hanh dong cuoi cung duoc fit.

Khi tat mach ruoi nhung giu nguyen adapter da huan luyen, diem giam tu 2.886 xuong 41. Dieu nay cho thay mach co dong gop that, nhung adapter van la mot phan quan trong cua ket qua.

Cac demo kieu “Fly Mario”

Cac demo nay chay MaleCNS LIF theo buoc thoi gian thua, khoang 20 ms. Khung game duoc chuyen thanh dac trung thi giac, sau do mot nhom neuron di xuong duoc gan voi phim bam. Trong Fly64, anh xa duoc viet tay. Trong fly-games, anh xa duoc fit bang hoi quy tuyen tinh tren cac van choi mau.

Mo hinh co the du doan dung phim bam 90 phan tram tren cac van da ghi ma no chua thay, nhung con ruoi van chet som khi choi truc tiep vi tinh huong thuc te lech khoi du lieu mau. Mario di vao tuong va dung lai.

Day khong phai loi phe phan. Tat ca deu la thi nghiem trung thuc. Diem can nho la adapter co vai tro rat lon. Mot co the dang chuyen dong khong tu dong chung minh day noi da tao ra hanh vi do. Can co thi nghiem doi chung: tat ket noi trong nao, tat dau vao, hoac tat ca hai.

dotFly

Truoc het, dotFly la mot thu vien: inference engine .NET cho mo hinh spike connectome cua ruoi. Godot, ung dung console, test va benchmark co the link truc tiep vao cung tien trinh.

dotFly tao checkpoint memory-mapped tu cac ban phat hanh MaleCNS va FlyWire, chay mo hinh Shiu et al., cung cap stimulus dau vao, spike va tan so dau ra, ghi va phat lai, cung cac cong tac vu nhan qua. Backend float64 doi chieu spike voi Brian2, con backend SIMD float32 du nhanh de chay toan bo MaleCNS theo thoi gian thuc tren laptop.

Demo phong khach

Demo la mot canh 3D Godot 4 (.NET), gom phong khach co nang, mot con ruoi, duong tren ban va cac dam mui troi theo gio. Connectome MaleCNS la thanh phan duy nhat nam giua cam giac va hanh dong cua ruoi.

  • Giac quan va dau vao: hai camera, moi camera cho mot mat kep, tao anh do sang 32 x 32. Ty le vung toi va toc do phong to tao tin hieu LC4. Do dich chuyen anh theo ngang va doc tao tin hieu T4a-d. Nong do mui tai hai rau tao tin hieu ORN_DM1, huong gio tao tin hieu JO-C/E, con cham duong khi dap xuong kich cac neuron vi giac. Tong cong co 7.524 neuron dau vao.
  • Connectome: ca 166.700 neuron duoc ve tai vi tri that va sang len khi phat spike that. Khong co script nao ve hoat dong gia.
  • Readout: cac mach duoc doc tu checkpoint bang CLI, gom 38 neuron trong 13 nhom. Vi du LC4 → DNp04 L/R, Giant Fiber cho tron chay; T4a → HS, T4b → H2, T4c → VS cho dong hoc thi giac; ORN_DM1 cho luong mui; JO-C/E cho huong gio; GRN → MN9 cho an.
  • Decoder: luat viet tay co dinh. Chenh lech DNp04 trai phai dieu khien re khoi vat dang tien. HS va H2 chong lai xoay. DNp01 dieu khien toc do. DM1_lPN dieu khien tim mui: mui manh len thi lao toi, yeu di thi dao huong, mat mui thi quay dau va quet tim. AMMC012 dieu khien bay nguoc gio. MN9 dieu khien an.

Huong cua mui khong the suy ra tu cac readout hien co: cac neuron DM1 phan ung giong nhau du mui den tu rau nao. Vi the adapter phai them logic: ruoi bay thang khi mui manh dan, quay lai khi mui yeu, sau do quet theo huong gio.

Ben trong dotFly: hieu nang C#

Cau truc dotFly tuong tu dotLLM:

src/DotFly.Core      doc checkpoint .dfb bang mmap, bang do thi, NeuronModel, RNG, IBackend
src/DotFly.Data      doc du lieu MaleCNS va FlyWire
src/DotFly.Cpu       kernel LIF SIMD, compute thread pool
src/DotFly.Engine    simulation, cong vao/ra, real-time driver, recorder, adapter
src/DotFly.Adapters  adapter readout ONNX Runtime va ML.NET
src/DotFly.Cli       dotfly build | inspect | run | bench | explore

Neuron duoc truy cap bang ID 64 bit chinh xac tu ban phat hanh connectome. Mot thi nghiem duong co the viet nhu sau:

NeuronSet sugar = brain.ByBodyIds("sugar_GRN_R", sugarGrnIds);
sim.Input(sugar, InputKind.PoissonToV).Fill(150f);
OutputPort mn9 = sim.Output(brain.ByBodyId(Mn9), OutputKind.Rate(50.Ms()));
sim.Run(1.Seconds());

Doan ma kich 21 neuron cam duong, doc neuron van dong cua voi va mo phong mot giay. Mau day du chay 30 lan thu cung cac thi nghiem tat neuron.

Voi ban FlyWire v630, 127.400 neuron chay 30 lan, moi lan mot giay, trong khoang ba giay thuc. Hoat dong trung binh cua MN9 la 83,3 Hz. Khi so voi Brian2, tap neuron hoat dong co Jaccard 0,949, tuong quan tan so la 0,9946, con MN9 cho ket qua 83,3 Hz so voi 93,3 Hz trong mau cong bo.

Cac quyet dinh thiet ke quan trong

  • Checkpoint memory-mapped: tep .dfb luu do thi dang CSR voi rowPtr[N+1], col[E] va w[E], kem nhan, vi tri va thong tin phien ban. Tao tep tu ban Arrow 1 GB mat khoang 10 giay, mo tep chi mat vai mili giay.
  • State dang Structure of Arrays: v[N] va g[N] nam trong bo nho unmanaged can hang 64 byte. Toan bo MaleCNS chi mat khoang 2 MB, vua trong L2.
  • Kernel LIF dung Vector256<float>: spike duoc nen bang TrailingZeroCount. Cung mot implementation ho tro ca double va float.
  • AggressiveOptimization: gan attribute nay cho moi ham trong buoc mo phong la bat ngo lon nhat. Neu thieu, JIT tiered giu kernel o tier-0 hoac OSR qua lau, tu 21 micro giay moi buoc giam con 6 micro giay.

Benchmark

Tren laptop 8 loi Ryzen 7 5800HS, AVX2:

  • FlyWire v630, 21 neuron cam duong o 150 Hz: 196.000 buoc moi giay, nhanh 19,6 lan thoi gian thuc.
  • MaleCNS v1.0, khong dau vao: 145.000 buoc moi giay, nhanh 14,5 lan thoi gian thuc.
  • MaleCNS v1.0, 1.684 neuron T4a o 150 Hz: 62.000 buoc moi giay, nhanh 6,2 lan thoi gian thuc.

Python, JavaScript va C#

Brian2, simulator spike pho bien ma bai bao goc su dung, dat khoang 400 buoc moi giay voi NumPy tren laptop nay. BrainCPU cua Xenova dat 851 buoc moi giay trong Node 24. BrainGPU dat 2.409 buoc moi giay tren Radeon tich hop va 5.383 tren RTX 3050 Ti.

dotFly dat 10.740 buoc moi giay voi mot thread va 43.656 voi 8 thread trong cung kich ban. O che do 8 thread, no nhanh hon khoang 11 lan so voi JavaScript cung cong viec. Ly do khong phai JavaScript qua cham, ma la C# dung duoc tam neuron moi lenh voi Vector256, state vua L2, khong kiem tra bien trong scatter va vong giao spike chi cham vao phan g nam trong cache.

Cac demo dung buoc dt = 20 ms nhu Fly64 va fly-games khong nam trong bang nay. Chung co it buoc hon 200 lan nen re hon theo thiet ke, nhung khong con dung day du mo hinh Shiu.

Gioi han va buoc tiep theo

Ranh gio thi giac nam sai vi tri

Hien tai encoder C# tu tinh truc tiep tin hieu “thuy nao thi giac” tu anh: dich chuyen va phong to thanh T4 va LC4. Cach nay bo qua cac buoc dau cua mach thi giac. Mat cua ruoi co khoang 800 don vi thi giac nho va mot thuy nao thi giac lon, voi nhiem vu tu tinh chuyen dong va vat dang tien tu tin hieu thuc the quang.

Buoc tiep theo la dua anh sang thang vao thuc the quang va xem day noi co tu tinh chuyen dong hay khong. Neu co, encoder se thu gon thanh “do sang moi mat”. Neu khong, co the dung mo hinh lai ket hop thuy nao hoc bang cach tuong tu Flyvis.

Mach dinh huong cua ruoi dang im lang

Day la gioi han lon hon. Trong demo, quyet dinh bay nguoc gio, lao toi, dao huong, quet mui va dap xuong do decoder cua toi dua ra. Con ruoi that tu tinh toan dieu nay trong nao: theo doi huong bay, ket hop gio va mui, sau do dieu khien DNa02 trai hoac phai.

Mach nay co trong day noi, nhung khi co dau vao gio va mui thi khong neuron nao phat du manh. Ly do la mach co tinh hoi quy: no phan hoi tro lai chinh no. Hoat dong chi duy tri duoc vi neuron dang hoat dong tiep tuc kich thich lang gieng va uc che phan con lai. Mo hinh Shiu hien tai chua the bieu dien tot co che nay; can mot mo hinh than kinh hoi quy phuc tap hon.

Ket luan

Hai dieu dung dong thoi. Ve mat nen tang, .NET co the chay mang spike 166.700 neuron va 25 trieu synapse theo thoi gian thuc tren laptop, cho ket qua giong nhau giua cac so luong thread va phu hop voi ban tham chieu khoa hoc. Vector256, NativeMemory, tep memory-mapped va mot thread pool tu viet la du.

Ve mat khoa hoc, connectome la mot phep do dang kinh ngac. Mo hinh LIF la mot diem khoi dau dang kinh ngac. Tuy nhien, moi thu khien con ruoi “choi game” hien nay deu la adapter. Adapter can duoc hien ro tren man hinh va tat trong thi nghiem doi chung.

dotFly duoc phat hanh theo GPLv3. Du lieu MaleCNS va FlyWire theo CC BY 4.0 va duoc tai rieng. Neu ban la lap trinh vien .NET muon kich vao mot bo nao that bang C#, hoac nha than kinh hoc muon co vong lap noi nhanh hon nhieu bac so voi ban tham chieu, hay thu nghiem: kich hoat mot thu, tat mot thu, va xem neuron nao phat.