

WERM hufanya nini
WERM, kifupi cha Wiring-Encoded Recurrent Modulator, ni uigaji mdogo wa neva unaotegemea mchoro halisi wa miunganisho ya hermaphrodite mtu mzima ya Caenorhabditis elegans. Mtandao wake wa neuroni 302 unaotumia viwango huendeshwa kwenye kivinjari, katika Node.js, au pamoja na modeli ya lugha inayoendeshwa kwenye kompyuta yako.
Modeli hutumia connectome kuchakata vichocheo vya hisi vilivyoigwa. Tabaka la uelekezaji husoma hali inayotokana ya mdudu na kuibadilisha kuwa mipangilio ya modeli ya lugha kama vile halijoto, top-p, vikomo vya tokeni, na hali ya sauti ya mstari mmoja. WERM haitumi data kwenye huduma ya mbali inapotumiwa na modeli ya ndani.
Ni nini kinachotegemea data ya kibayolojia?
Hazina inajumuisha mtandao wa hermaphrodite mtu mzima kutoka Cook et al. 2019, uliotolewa kupitia OpenWorm Connectome Toolbox. Una neuroni 302, miunganisho ya kemikali 3,709 yenye mwelekeo, na jozi 1,105 za miunganisho ya pengo. Uzito wa miunganisho unawakilisha idadi ya sehemu za darubini ya elektroni ambako seli mbili zilionekana zimeungana, badala ya idadi ya moja kwa moja ya sinapsi.
Mradi pia una ramani zinazotokana na jenomu. Jenomu rejelewa ni NCBI RefSeq GCF_000002985.6, inayojulikana pia kama WBcel235, na maelezo ya jeni yanatoka WormBase WS298. Vipimo vilivyojumuishwa vinahusu besi 100,272,607 katika kromosomu sita, zikiwa na asilimia 35.4 ya GC na jeni 19,971 zinazoweka misimbo ya protini.
WERM hutumia mtandao wa viwango wenye lango lililopewa msukumo na mitandao ya viwango vya muda wa kimiminika. Neuroni 28 zinazojulikana kutengeneza na kutoa GABA huchukuliwa kuwa zuizi; neuroni zilizosalia huchukuliwa kuwa za kusisimua.
Elewa chaguo za uundaji wa modeli
Connectome haielezi ishara ya kila sinapsi. Kwa hiyo WERM hutumia kanuni inayotegemea GABA kama dhana ya kurahisisha. Vigezo vya modeli vilichaguliwa na scripts/sweep.mjs kutoka mipangilio 1,470 kwa kutumia kanuni iliyowekwa kabla ya matokeo kuchunguzwa. Hivyo WERM ni modeli iliyorekebishwa, si modeli iliyolinganishwa na rekodi za neva.
Ulinganifu wa uelekezaji pia ni chaguo la wazi la usanifu. Hali ya mdudu hudhibiti vigezo vya sampuli na sauti kupitia msimbo unaoweza kukaguliwa na kubadilishwa. Data ya sayansi ya neva haiamui mipangilio hii ya modeli ya lugha.
Sakinisha na uendeshe uigaji wa kwanza
Kloni hazina na uingie kwenye saraka yake:
git clone https://github.com/Henryfud/werm
cd wermWERM inahitaji Node.js 20 au mpya zaidi. Modeli haina vitegemezi vya wakati wa kuendesha, kwa hiyo unaweza kuendesha majaribio ya kitengo bila kusakinisha vifurushi:
npm testEndesha uigaji wa sekunde tatu ukitumia kichocheo cha kuguswa kwa mkia:
node src/cli.mjs sim --stim touch-tail --seconds 3Amri huendesha mtandao kwa ingizo la hisi lililochaguliwa. Kiolesura cha mstari wa amri pia kinaunga mkono amri ya connect kwa muunganisho wa modeli ya lugha ya ndani na amri ya steer kwa kukagua mipangilio ambayo WERM ingetengeneza.
Unganisha WERM na Ollama
Kwanza sakinisha Ollama kutoka ollama.com/download na uianzishe. Unaweza kuanzisha huduma moja kwa moja kwa ollama serve ikihitajika. Pakua modeli ya ndani, kisha iunganishe na WERM:
ollama pull llama3.2
node src/cli.mjs connect --model llama3.2Badilisha llama3.2 kwa jina la modeli yoyote iliyosakinishwa kwenye Ollama. Ikiwa Ollama haijaendeshwa au modeli haipatikani, WERM huripoti tatizo na kupendekeza cha kuendesha. Tumia --host wakati huduma ya Ollama inapangishwa mahali pengine isipokuwa http://localhost:11434.
Wakati wa mazungumzo, WERM kwanza hubadilisha ujumbe kuwa vichocheo vya hisi, humendesha mdudu kwa muda mfupi, kisha hutumia hali inayotokana kusanidi ombi la modeli. Ujumbe hubaki kwenye kompyuta yako wakati WERM na seva ya modeli zote ziko ndani.
Tumia seva nyingine ya ndani inayooana na OpenAI
WERM inaweza kuunganishwa na injini yoyote ya ndani inayotoa API ya ukamilishaji wa mazungumzo ya OpenAI. Anzisha seva, kisha toa URL yake ya msingi na jina la modeli:
node src/cli.mjs connect --base-url http://localhost:1234/v1 --model YOUR_MODELMipangilio ya kawaida ya seva ni pamoja na:
- LM Studio: anzisha seva ya ndani kutoka kichupo chake cha Developer na utumie
http://localhost:1234/v1. - llama.cpp: endesha
llama-server -m your-model.ggufna utumiehttp://localhost:8080/v1. - vLLM: endesha
vllm serve your-modelna utumiehttp://localhost:8000/v1. - Kiunganishi cha Ollama cha mtindo wa OpenAI: tumia
http://localhost:11434/v1.
Kwa seva hizi, WERM hutuma temperature, top_p, na max_tokens. API ya mtindo wa OpenAI haina adhabu ya marudio inayotumiwa na mteja wa Ollama, kwa hiyo chaguo hilo huachwa. Ikiwa seva yako inahitaji uthibitishaji, weka kigezo cha mazingira cha WERM_API_KEY.
Kagua uelekezaji bila kuwasiliana na modeli
Tumia amri ya steer kuona jinsi WERM inavyotafsiri ujumbe:
node src/cli.mjs steer "why is my code broken?"Amri huchapisha vichocheo vilivyokadiriwa, hali ya sasa, chaguo mahususi za modeli, na kidokezo cha mfumo. Matokeo yanaweza kujumuisha vichocheo kama nose-touch na noxious, hali ya reversing, na thamani za sampuli za wateja wa Ollama na wanaooana na OpenAI.
Amri hii ya nje ya mtandao ni muhimu unapounda muunganisho, kwa sababu hukuruhusu kukagua tabia ya uelekezaji bila kuanzisha seva ya modeli.
Tumia WERM kutoka JavaScript
Mtandao mkuu na visaidizi vya uelekezaji vinapatikana kama moduli za ES. Mfano ufuatao hupakia connectome, hutuliza mtandao, hutumia vichocheo vinavyotokana na ujumbe, na kusoma vigezo vya uelekezaji vinavyotokana:

import fs from "node:fs";
import { WormBrain } from "./src/network.mjs";
import { steer, stimuliFromText, applyStimuli, systemPrompt } from "./src/steer.mjs";
const worm = new WormBrain(
JSON.parse(fs.readFileSync("data/connectome.json", "utf8"))
);
worm.run(1);
applyStimuli(worm, stimuliFromText("thanks, that helped"), true);
worm.run(1.5);
const { options, mode } = steer(worm.readout());
// Tuma options na systemPrompt(mode) kwenye injini yako ya ndani.Wito wa awali wa worm.run(1) huupa mtandao muda wa kutulia. Baada ya maandishi kubadilishwa kuwa vichocheo, applyStimuli hubadilisha hali ya hisi na uendeshaji mwingine huupa mtandao muda wa kuitikia. Kisha readout hupitishwa kwa steer, ambayo hurejesha chaguo za sampuli na hali. Tumia systemPrompt(mode) kupata mwongozo wa sauti unaolingana.
Endesha majaribio tena
Hazina inajumuisha hati za uchanganuzi wa vigezo, ulinganisho wa miundo batili, na kipimo cha kumbukumbu cha mtindo wa hifadhi:
npm run sweep
npm run experimentsAmri hizi huandika matokeo kwenye docs/results/, hutumia kila kiini cha CPU kinachopatikana, na huchukua dakika chache.
Matokeo yaliyoandikwa yanaonyesha kuwa kuguswa kwa mkia huisukuma sana mitandao mbele na kuguswa kwa pua huisukuma nyuma, na utendaji huo ni bora kuliko misukumo 100 ya nasibu yenye ukubwa sawa katika kila jaribio. Kuguswa kwa kichwa hutokeza mwitikio mdogo wa kurudi nyuma, huku kichocheo chenye madhara kisipokuwa bora kuliko msukumo wa nasibu. Mitandao iliyochanganywa na mitandao ya nasibu kwa kawaida hushindwa kulingana na tofauti ya kichwa dhidi ya mkia ya mtandao halisi, ingawa muunganisho halisi hufanya vibaya kidogo kuliko matoleo yaliy|||| yaliyokanganywa katika kipimo cha kumbukumbu.
Athari ya uelekezaji kwenye matokeo ya modeli ya lugha bado haijapimwa. Hati ya tathmini inapatikana, lakini uendeshaji wake kwa modeli halisi bado haujakamilishwa.
Tathmini uelekezaji
Ili kuona hakikisho la tathmini iliyopangwa bila kuwasiliana na Ollama, endesha:
node scripts/steer-eval.mjs --dry-run --limit 5Kwa tathmini halisi inayotumia modeli ya ndani ya Ollama, endesha:
node scripts/steer-eval.mjs --model llama3.2Hati hii inalinganisha mipangilio chaguomsingi, mipangilio iliyozalishwa na WERM, na mipangilio ya nasibu katika vidokezo 200. Chaguo la dry-run linafaa kwa kukagua vigezo vilivyopangwa kabla ya kuanza jaribio linalotegemea modeli.
Jenga upya data ya jenomu na connectome
Ramani za jenomu
Ili kupakua jenomu ya marejeleo na kutengeneza upya ramani za GC na msongamano wa jeni, endesha:
bash scripts/fetch_genome.sh
node scripts/genome_stats.mjs data/genome/c_elegans.fasta
node scripts/gc_windows.mjs data/genome/c_elegans.fasta
bash scripts/fetch_annotation.sh
node scripts/gene_windows.mjs data/genome/annotation.gff.gzUpakuaji wa jenomu ni takribani MB 100 na upakuaji wa maelezo ni takribani MB 10. Faili zilizopakuliwa hazifuatiliwi na Git. Tovuti pia inaweza kusoma faili la FASTA ndani ya kompyuta ili kuchora ramani ya GC; data hiyo haipakiwa.
Faili la connectome
Ili kujenga upya data/connectome.json, unda mazingira ya Python, sakinisha kumbukumbu la kifurushi linalohitajika, lifungue, kisha endesha hati ya ujenzi:
python3 -m venv .venv
.venv/bin/pip install openpyxl
.venv/bin/pip download cect==0.3.5 --no-deps -d dl
unzip -q dl/cect-*.whl -d dl/x
.venv/bin/python scripts/build_connectome.py dl/x/cect/dataJenga na kagua tovuti
Tovuti ya kusogeza kwa muda mrefu iliyo kwenye site/ inajumuisha uga wa minyoo wa pikseli unaozalishwa, dunia hai ya connectome, jenomu iliyochorwa kwa kipimo, na maelezo ya ufafanuzi. Tovuti hutumia msimbo uleule kama modeli ya mstari wa amri.
Jenga ukurasa kwa:
npm run build:siteHii huandika site/index.html. Weka GITHUB_URL au SITE_URL ili kubinafsisha viungo kwenye ukurasa. Netlify hutumia mchakato huohuo wa ujenzi.
Endesha ukaguzi wa hazina kwa:
npm test
npm run check
npm ci && npx playwright install chromium && npm run test:siteSeti ya majaribio inajumuisha majaribio 36 ya unit. Ukaguzi wa ziada huthibitisha kanuni za mradi na kuendesha jaribio la moshi kwenye kivinjari kisicho na kiolesura. Muunganisho endelevu huendesha ukaguzi kwenye Node.js 20 na 22.
Chunguza muundo wa mradi
data/connectome.jsonina neuroni na miunganisho.src/network.mjshutekeleza modeli ya neuroni.src/reflex.mjsina ukaguzi wa refleksi na ulinganisho wa umaalumu.src/graphs.mjshuunda tofauti za miunganisho iliyochanganywa na ya nasibu.src/steer.mjshupangilia hali ya mnyoo kuwa mipangilio na sauti ya modeli.src/ollama.mjsnasrc/openai.mjshutekeleza wateja wa modeli za ndani.src/cli.mjshutoa amri zasim,connect, nasteer.scripts/ina hati za data, majaribio, uthibitishaji, na ujenzi wa tovuti.docs/RESULTS.mdhuweka kumbukumbu ya matokeo yaliyopimwa, hukudocs/ARCHITECTURE.mdikieleza modeli na usomaji wa matokeo.
Vikwazo muhimu
WERM imekusudiwa kuwa ndogo na si uigaji kamili wa kibaolojia. Haina misuli, fizikia ya mwili, neuropeptidi, wala ujifunzaji, na haijalinganishwa na rekodi kutoka kwa minyoo halisi. Tabia yake haipaswi kufasiriwa kama utabiri wa kile ambacho mnyoo halisi ungefanya.
Safu ya uelekezaji pia haimpi modeli ya lugha uwezo mpya, na athari yake kwenye majibu ya modeli bado haijapimwa. Kwa uigaji wa kibiofizikia ulio sahihi zaidi, README inapendekeza c302 ya OpenWorm. WERM imeundwa kuwa fupi vya kutosha kukaguliwa na kurekebishwa ndani ya alasiri moja.
Hitimisho
WERM hutoa njia ya vitendo ya kufanya majaribio kwa mchoro halisi wa miunganisho ya C. elegans bila kuhitaji mkusanyiko mkubwa wa zana za uigaji. Anza na CLI ya Node.js, jaribu vichocheo vya mguso, kagua vigezo vya uelekezaji vilivyotengenezwa, kisha unganisha mtandao na Ollama au seva nyingine ya ndani inayooana na OpenAI. Kuanzia hapo, hati zilizojumuishwa hukuruhusu kurudia majaribio, kuunda upya bidhaa za data za kibaolojia, na kurekebisha safu ya uelekezaji kulingana na mtiririko wako wa kazi wa AI wa ndani.
