Mradi Huu Unafanya Nini
Mradi huu unaendesha GLM-5.3-Flash kwenye mifumo miwili ya NVIDIA DGX Spark kwa kutumia TensorFold v0.5.0. Kila Spark inaendesha rank moja iliyosambazwa, huku Spark ya kwanza pia ikiwa na API ya HTTP inayooana na OpenAI.
Usanidi wa kawaida unaauni maombi manne kwa wakati mmoja, dirisha la muktadha lenye ukubwa wa juu wa tokeni 1,048,576 kwa kila ombi, ingizo la picha na video, kuita zana, matokeo yenye muundo maalum, endpoint za tokenization, na vipimo vya Prometheus. Mawasiliano kati ya mifumo hiyo miwili hutumia kiungo cha moja kwa moja cha ConnectX-7 RoCE.
Usambazaji huu hutumia checkpoint ya Mia-AiLab GLM-5.3-Flash EXL3. Wataalamu wanaopitishwa huhifadhiwa kwa takribani biti nne kwa kila uzani, huku uzani mwingine wa checkpoint ukiwa BF16. Checkpoint kamili ina takribani GB 176.
Vipengele Muhimu
- API inayoendana na OpenAI: Tumia endpoint za ukamilishaji wa gumzo, ukamilishaji, majibu, na kuorodhesha miundo.
- Muktadha mrefu: Hadi tokeni 1,048,576 za kidokezo na jibu kwa ombi binafsi chini ya usanidi chaguomsingi wa FP8 KV.
- Uelekezaji wa wakati mmoja: Decode hadi maombi manne kwa pamoja kwa kutumia DFlash2 drafter chaguomsingi.
- Hifadhi ya pamoja ya akiba: Mazungumzo ya wakati mmoja hutumia hifadhi moja ya FP8 KV iliyo na takribani tokeni milioni 2.1 hadi 2.7, kulingana na kumbukumbu inayopatikana.
- Maombi yenye aina nyingi za data: Tuma ingizo la JPEG, PNG, WebP, MP4, WebM, MOV, MKV, na video nyingine zinazoweza kutambuliwa na FFmpeg.
- Vidhibiti vya hoja: Chagua kiwango cha chini, cha juu, au cha juu kabisa cha juhudi za hoja, au zima kufikiri kwa ombi.
- Vipengele vya mawakala: Tumia kuita zana na matokeo yenye muundo unaozingatia schema kupitia xgrammar.
- Endpoint za uendeshaji: Kagua afya, tokeniza au tokenua ingizo, na kusanya vipimo vya Prometheus.
- Usambazaji wa kiotomatiki: Amri moja huandaa mashine zote mbili, huanzisha rank zote mbili, hufanya jaribio la msingi, na kuripoti anwani ya API.
Mahitaji ya Vifaa na Programu
Unahitaji DGX Spark mbili, au mifumo miwili ya GB10 yenye GB 128 za kumbukumbu iliyounganishwa kila mmoja. Takribani GiB 110 lazima ziwe huru kwenye kila GPU wakati seva inapoanza, hivyo simamisha kwanza mizigo mingine mikubwa ya GPU.
Mahitaji ya mtandao
Unganisha milango ya ConnectX-7 kwa kebo ya QSFP na upe kila endpoint anwani ya IPv4 katika subneti binafsi ileile. Kwa mfano, head inaweza kutumia 192.0.2.1/24 na worker 192.0.2.2/24. Anwani hizo lazima zifikike kwa ping, na GID ya RoCE v2 lazima ipatikane.
Ikiwa milango yote miwili ya CX7 imeunganishwa na kupewa anwani, mradi unaweza kutumia reli zote mbili. Kulingana na vipimo vya README, all-gather ya sehemu ya kidokezo huwa takribani mara 1.8 haraka zaidi kwa kutumia reli mbili.
Mahitaji ya SSH na mfumo
- Ufikiaji wa SSH unaotumia funguo kutoka Spark ya head kwenda kwa worker.
- Docker yenye runtime ya kontena ya NVIDIA kwenye mifumo yote miwili.
- Akaunti yako iwe katika kundi la
dockerkwenye mifumo yote miwili. rsynciwe imesakinishwa kwenye mifumo yote miwili.- Takribani GB 205 za nafasi ya diski kwenye kila Spark.
- Kwa hiari, CLI ya Hugging Face
hfna tokeni ya Hugging Face kwenye head.
Unda ufunguo wa SSH ikihitajika, unakili kwa worker, na uthibitishe ufikiaji usiohitaji mwingiliano:
ssh-keygen -t ed25519
ssh-copy-id user@192.0.2.2
ssh -o BatchMode=yes user@192.0.2.2 trueDrafter ya DFlash2 ina leseni ya CC BY-NC-ND 4.0 na ni kwa matumizi yasiyo ya kibiashara pekee. Chagua MTP drafter ya checkpoint kabla ya usanidi wa kwanza ikiwa unahitaji kuepuka kupakua au kutumia DFlash2.
Sakinisha na Usanidi Mradi
1. Clone hazina kwenye head
git clone https://github.com/MiaAI-Lab/GLM-5.3-Flash-EXL3-2x-DGX-Sparks-TensorFold.git
cd GLM-5.3-Flash-EXL3-2x-DGX-Sparks-TensorFold
cp scripts/local.sh.example scripts/local.shWorker haihitaji checkout yake. Skripti za usanidi huhamisha picha ya kontena na faili za modeli zinazohitajika kutoka kwa head.
2. Weka anwani ya worker
Hariri scripts/local.sh na uweke WORKER kuwa lengwa la SSH la worker:
WORKER=user@192.0.2.2Rank zilizogawanywa huwasiliana kupitia njia inayotumika kumfikia worker. Ikiwa WORKER inarejelea anwani kwenye mtandao mwingine, weka FABRIC_PEER kuwa anwani binafsi ya CX7 ya worker:
WORKER=user@worker-hostname
FABRIC_PEER=192.0.2.23. Chagua drafter ikihitajika
Chaguo-msingi ni DRAFTER=dflash2, inayoruhusu hadi maombi manne kwa wakati mmoja na kutoa uboreshaji wa decode uliopimwa wa takribani asilimia 5 hadi 10. Ili kutumia kichwa cha MTP cha checkpoint badala yake, kisanidi kabla ya kuanza kwa mara ya kwanza:
DRAFTER=mtpMTP huepuka leseni na upakuaji wa DFlash2, lakini kwa chaguo-msingi huhudumia ombi moja kwa wakati mmoja.
4. Anzisha rank zote mbili
./start.shWakati wa kuendesha kwa mara ya kwanza, skripti hukagua mifumo yote miwili, hupata au huunda picha ya kontena ya takribani GB 25, hupakua checkpoint na drafter kwenye head, hunakili kwenye worker, na hukompile kernel za CUDA kwenye ~/.cache/tensorfold-glm53.
Uanzishaji unaofuata kwa kawaida huchukua dakika mbili hadi sita kupakia takribani GiB 80 za uzani kwenye kila Spark. Kianzishaji hufuata logi ya rank 0, huripoti maendeleo ya upakiaji, huendesha jaribio la msingi lililosambazwa, na kuchapisha endpoint ya moja kwa moja kwenye porti 8888.
Ili kuandaa mifumo yote miwili bila kuanzisha API, endesha:
scripts/prepare.shIli kulazimisha ujenzi mpya wa picha, tumia:
scripts/prepare.sh --rebuildFanya Ombi Lako la Kwanza la API
Kitambulisho chaguo-msingi cha modeli ni GLM-5.3-Flash-EXL3, na URL msingi ni http://<head-address>:8888/v1.
Orodhesha modeli zinazopatikana
curl -s http://<head-address>:8888/v1/modelsTuma ukamilishaji wa mazungumzo
curl -s http://<head-address>:8888/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{
"model": "GLM-5.3-Flash-EXL3",
"messages": [
{"role": "user", "content": "Write a Python fibonacci function."}
],
"max_tokens": 2000
}'Kwa chaguo-msingi, modeli hufikiri kabla ya kujibu. Hoja za kimantiki hurejeshwa katika reasoning_content, huku jibu la mwisho likionekana katika content. Tenga tokeni za kutosha za matokeo kwa awamu zote mbili. Ikiwa content ni tupu, huenda modeli ilitumia kikomo cha matokeo wakati wa kufikiri.
Dhibiti kufikiri na sampuli
Weka reasoning_effort kuwa low, high, au max. Tumia none kuomba jibu la moja kwa moja bila kufikiri:
curl -s http://<head-address>:8888/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{
"model": "GLM-5.3-Flash-EXL3",
"messages": [{"role": "user", "content": "Summarize TCP in two sentences."}],
"reasoning_effort": "low",
"temperature": 0,
"max_tokens": 1000
}'API pia inakubali temperature, top_p, top_k, min_p, na seed. Bila seed iliyobainishwa, sampuli hutengeneza ufunguo wake kutokana na kidokezo, hivyo maombi yanayofanana hutoa jibu lilelile.
Tuma Picha na Video
Mnara wa kuona wa GLM huendeshwa kwenye rank 0 kwa chaguo-msingi. Picha na video huwakilishwa kama sehemu za maudhui za mtindo wa OpenAI katika ujumbe wa mtumiaji.
Changanua picha ya ndani
IMG=$(base64 -w0 photo.jpg)
curl -s http://<head-address>:8888/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{
"model": "GLM-5.3-Flash-EXL3",
"messages": [{
"role": "user",
"content": [
{"type": "image_url", "image_url": {"url": "data:image/jpeg;base64,'"$IMG"'"}},
{"type": "text", "text": "What is in this picture?"}
]
}],
"max_tokens": 2000
}'Kwa chaguo-msingi, seva inakubali maudhui ya media kupitia URL za data. Weka VISION_URLS=1 ikiwa seva inapaswa pia kuchukua URL za HTTPS za umma.
Vikomo vya media vinavyotumika
- Hadi picha 50 kwa ombi, zikiwa na kikomo cha MB 10 kwa kila picha na MB 64 kwa data yote ya picha.
- Hadi video 4 kwa ombi, zikiwa na kikomo cha MB 64 kwa kila video na MB 96 kwa data yote ya video.
- Video zinaweza kuwa na hadi saa moja ya video kila moja.
- Mwili wa ombi unaweza kuwa hadi MiB 96, na kuacha takriban MB 70 kwa media iliyosimbwa kwa base64.
- Picha moja hupokea kiwango cha juu cha tokeni 2,048, huku picha zote katika ombi moja zikishiriki bajeti chaguo-msingi ya tokeni 16,384.
- Usampulishaji wa video huanza kwa fremu mbili kwa sekunde na fremu zisizozidi 128 katika klipu.
Kwa video, badilisha sehemu ya maudhui ya picha na sehemu ya video_url iliyo na URL ya data kama vile data:video/mp4;base64,....
Ikiwa unahitaji maandishi pekee, weka VISION=0. Hii huepuka kupakia mnara wa kuona na kuacha takriban GiB 1.8 zaidi ya kumbukumbu kwenye rank 0 kwa matumizi ya akiba.
Endesha na Fuatilia Seva
Anzisha upya na simamisha
./start.sh restart
./stop.shKuanzisha upya kunahitajika baada ya kubadilisha mipangilio endelevu. Kusimamisha huduma huachilia kumbukumbu ya GPU kwenye mashine zote mbili.
Kagua kumbukumbu
docker logs -f glm53-flash-tf
ssh <worker> docker logs -f glm53-flash-tfAmri ya kwanza hufuata rank 0 kwenye head. Ya pili hufuata rank 1 na ni muhimu hasa worker anapotoka bila kutarajiwa.
Angalia hali na vipimo
curl -s http://<head-address>:8888/health
curl -s http://<head-address>:8888/metricsJibu la hali huripoti hali ya shughuli, mitiririko hai, na uwezo wa hifadhi inayoshirikiwa, ikijumuisha pool_tokens na pool_free_tokens. Mwisho wa vipimo hutoa takwimu za Prometheus kuhusu maombi, muda wa kusubiri, muda hadi tokeni ya kwanza, na hali.
Elewa Muktadha na Kumbukumbu ya KV Inayoshirikiwa
Usanidi chaguo-msingi hutumia akiba ya KV ya FP8 na huipa kila ombi dirisha la juu la tokeni 1,048,576. Maombi manne hushiriki hifadhi iliyopimwa kuwa tokeni 2,684,928 katika uanzishaji mmoja uliorekodiwa, ingawa uwezo kamili hutegemea kumbukumbu iliyo huru.
Ombi moja linaweza kutumia dirisha lote, lakini mazungumzo yote yanayoendelea na yaliyohifadhiwa lazima yatoshee katika hifadhi ya pamoja. Kwa mfano, mazungumzo mawili yanaweza kukaribia tokeni milioni moja kila moja, huku mazungumzo mafupi yanayoendeshwa kwa pamoja yakishiriki uwezo uliobaki. Ombi ambalo bado haliwezi kuwekwa husubiri maombi mengine yakamilike.
Tumia CONTEXT=0 kukokotoa dirisha kubwa zaidi linalotoshea, lakini kumbuka kuwa hii haiachi kumbukumbu kwa ajili ya kuhifadhi hali za vidokezo vya mazungumzo mengine. Kubadilisha hadi hifadhi kamili ya KV ya BF16 hupunguza kwa kiasi kikubwa dirisha linalopatikana.
Kumalizika kwa kumbukumbu ya pamoja kunaweza kugandisha Spark badala ya kutoa hitilafu safi ya ugawaji. Dumisha hifadhi chaguo-msingi isipokuwa unaelewa ubadilishanaji wa kumbukumbu, na ongeza
MEMORY_RESERVE_GIBwakati mzigo mwingine wa kazi unashiriki mashine.
Usanidi wa Kina
Mipangilio inaweza kutolewa kupitia mazingira, scripts/local.sh, au faili la .env lililo karibu na start.sh. Mpangilio wa kipaumbele ni mazingira, kisha scripts/local.sh, kisha .env, na hatimaye chaguo-msingi za hazina.
Badilisha samtidiga kwa uendeshaji mmoja
PARALLEL=2 ./start.sh restartPARALLEL inaweza kuwekwa kutoka moja hadi nne wakati DFlash2 imewezeshwa. MTP kwa chaguo-msingi hushughulikia ombi moja kwa wakati.
Badilisha dirisha la muktadha
CONTEXT=524288 ./start.sh restartMuktadha mdogo unaweza kupunguza shinikizo kwenye akiba wakati dirisha kamili la tokeni milioni moja halihitajiki.
Ongeza kikomo chaguo-msingi cha matokeo
./start.sh restart --max-tokens 16384Hoja za ziada za mstari wa amri hupitishwa kwa tensorfold serve baada ya chaguo-msingi zilizosanidiwa, hivyo huwa na kipaumbele. Tekeleza ./start.sh --help ili kukagua hoja zinazotumika.
Lazimisha au ruka maandalizi
PREPARE=1 ./start.sh restart
PREPARE=0 ./start.sh restartAmri ya kwanza hulazimisha ukaguzi wa usanidi na mchakato wa maandalizi. Ya pili huuruka.
Tumia tena vidokezo kwa ufanisi
Utumiaji tena wa kiambishi awali cha pamoja umewezeshwa kwa chaguo-msingi kwa SHARED_PREFIX=1. Vidokezo vya mfumo vinavyojirudia na vidokezo vilivyohifadhiwa vinavyofanana vinaweza kuendelea kutoka hali iliyowekwa kwenye akiba badala ya kuletwa mapema tena. Katika vipimo vilivyoandikwa, kidokezo kilichorudiwa cha tokeni 64K kilipungua kutoka sekunde 34 hadi chini ya sekunde 0.07, huku utumiaji tena wa kidokezo cha mfumo cha tokeni 7.9K ukipunguza uanzishaji kutoka sekunde 4.24 hadi sekunde 0.13.
Chagua usahihi wa akiba na uzani
KV=fp8ndiyo chaguo-msingi na huwezesha dirisha kubwa zaidi la muktadha.KV=bf16hutumia uhifadhi sahihi wa akiba lakini hupunguza kwa kiasi kikubwa dirisha linalopatikana.DENSE=q4ndiyo chaguo-msingi kwa vipengele vizito vya checkpoint.DENSE=fp8naDENSE=bf16ni chaguo mbadala zinazopatikana, zenye athari tofauti za matumizi ya kumbukumbu.
Uwezo wa Ziada wa API
Pamoja na ukamilishaji wa mazungumzo, seva hutoa /v1/completions, /v1/responses, /v1/models, /tokenize, /detokenize, /health, na /metrics. Njia za tokeni zinapatikana pia chini ya /v1/. Seva haitoi mwisho wa /v1/messages unaooana na Anthropic.
Uuitaji wa zana unaunga mkono tools na tool_calls zinazotiririshwa, huku hoja zikiwa na aina kulingana na schema iliyotolewa. Uzalishaji uliopangwa unaunga mkono json_object, json_schema, JSON inayoongozwa, usemi wa kawaida, chaguo, sarufi, na sehemu nyingine za matokeo yaliyopangwa zinazotekelezwa kupitia xgrammar baada ya hoja kukamilika.
Ikiwa kidokezo pamoja na max_tokens vinazidi dirisha lililosanidiwa, API hurudisha HTTP 400 yenye msimbo wa hitilafu wa mtindo wa OpenAI context_length_exceeded.
Kutatua Matatizo ya Kawaida ya Uanzishaji
- Kumbukumbu haitoshi: Ikiwa uanzishaji unaripoti kuwa ni GiB chache tu zinazopatikana, kagua
docker psna usitishe mizigo mingine ya GPU kwenye Sparks zote mbili. - Hakuna kifaa au njia ya RoCE: Thibitisha kuwa violesura vya CX7 vina anwani za IPv4 kwa kutumia
ip -4 addr. Ikiwa SSH hutumia mtandao mwingine, sanidiFABRIC_PEERkwa anwani ya CX7 ya worker. - Akiba ya worker haiwezi kuandikwa: Rekebisha umiliki wa akiba ya Hugging Face ya worker ikiwa kontena la awali liliiacha ikiwa inamilikiwa na root.
- Rank moja inatoka: Kagua kumbukumbu kwenye mashine zote mbili. Kizindua kwa kawaida husitisha rank iliyobaki ikiwa upande wowote utashindwa.
- Usanidi umebadilika: Baada ya kurekebisha patchi au kubadilisha TensorFold, picha ya msingi, au ingizo linalohusiana la ujenzi, tekeleza
scripts/prepare.sh --rebuild.
Matarajio ya Utendaji
Katika vipimo vya README vya Sparks mbili kwa chaguo-msingi, usimbaji wa maandishi ulianzia tokeni 60.4 kwa sekunde kwa ombi moja hadi tokeni 108.8 kwa sekunde kwa jumla kwa maombi manne yanayofanyika kwa wakati mmoja. Uzalishaji uliopangwa ulianzia tokeni 114.7 hadi 227.9 kwa sekunde kwa jumla. Prefill ilikuwa takriban tokeni 1,952 kwa sekunde kwa kidokezo cha tokeni 8,219 na tokeni 1,015 kwa sekunde kwa kidokezo cha needle-in-a-haystack cha tokeni 981,841, ambapo needle ilipatikana.
Takwimu hizi zilipimwa kwa mitiririko minne, akiba ya FP8 KV, uzani mnene wa biti nne, DFlash2 na rasimu za copy, vision ikiwa imewezeshwa, na saa za GPU zikiwa zimewekewa kikomo cha MHz 2,200. Zichukulie kama matokeo ya marejeo kwa usanidi huo, si dhamana kwa kila mazingira.
Hitimisho
Usambazaji huu huweka usanidi changamano wa TensorFold wa nodi mbili nyuma ya mtiririko wa vitendo wa uanzishaji na API inayoendana na OpenAI. Mara tu kiungo cha CX7, ufikiaji wa SSH, runtime ya Docker, hifadhi, na anwani ya worker vinapokuwa tayari, ./start.sh hushughulikia maandalizi, uzinduzi uliosambazwa, uthibitishaji, na utoaji wa huduma. Kuanzia hapo, unaweza kutumia wateja wa kawaida wa API huku ukirekebisha upatanifu, muktadha, hoja, vikomo vya multimodal, na tabia ya kumbukumbu kulingana na mzigo wako wa kazi.
