Ruka hadi maudhui makuu
Mafunzo ya AI

Endesha Qwen3.8-Flash-Next kwenye Colab A100 ukitumia API Inayooana na OpenAI

Jifunze jinsi ya kutumia collabosm kuandaa runtime ya Colab A100 High-RAM, kupakia Qwen3.8-Flash-Next ukitumia ExLlamaV3, kuchapisha API salama kupitia Cloudflare, kuunganisha wateja, kujaribu utiririshaji ndani ya kifaa chako, kurekebisha akiba, na kuzima VM inayotoza gharama kwa usalama.

Endesha Qwen3.8-Flash-Next kwenye Colab A100 ukitumia API Inayooana na OpenAI

collabosm hufanya nini

collabosm huendesha Qwen3.8-Flash-Next kwenye tukio moja la Colab A100 80 GB High-RAM. Modeli hii ni modeli ya mchanganyiko wa wataalamu ya 125B-A6B yenye usanifu mseto wa Gated-DeltaNet na umakini kamili, pamoja na urefu asilia wa muktadha wa tokeni 262,144.

Mradi huandaa au kurejesha VM ya Colab, husakinisha runtime ya ExLlamaV3 yenye toleo lililobandikwa, hupakua uzani wa modeli wenye toleo lililobandikwa, huwasha seva ya HTTP inayooana na OpenAI, na kuifikisha kupitia handaki la Cloudflare. Wateja huunganishwa kwenye URL ya handaki chini ya /v1 kwa kutumia ufunguo wa bearer unaozalishwa.

ExLlamaV3 ndiyo injini pekee ya inference inayotumiwa na hazina hii. Seva ya API yenyewe imetekelezwa na collabosm kwa sababu ExLlamaV3 haina seva ya HTTP.

Vipengele muhimu

  • Usambazaji kwenye GPU moja: huendesha uzani unaochukua takriban GiB 63.6 za VRAM kwenye runtime moja ya A100 80 GB High-RAM.
  • Miingiliano inayoendana na OpenAI: inaauni /v1/chat/completions na /v1/responses, ikiwemo utiririshaji wa majibu kwa vipande.
  • Urejeshaji salama wa Colab: huunganisha tena assignments zilizoachwa badala ya kutegemea rekodi za muda za vipindi vya CLI vya ndani au kuunda VM nyingi zinazotozwa.
  • Uthibitishaji wa maunzi: hukataa na kusimamisha A100 isiyooana ya GB 40 kabla ya kupakia modeli.
  • Uhifadhi endelevu wa vidokezo: hudumisha Generator moja ya ExLlamaV3 inayodumu kwa muda mrefu, ili jedwali la kurasa na akiba ya RAM iliyobandikwa viendelee kuwepo kati ya maombi.
  • Muundo wa akiba wa ngazi mbili: huchanganya uwezo wa GPU KV na akiba ya hiari ya RAM ya mwenyeji iliyobandikwa kwa ajili ya kuendelea haraka na mazungumzo yasiyotumika.
  • Upimaji wa itifaki wa ndani: hutoa injini bandia inayotumia kishughulikia halisi cha HTTP bila GPU au uzani wa modeli.
  • Maono ya hiari: inaweza kupakia kipengele cha maono cha modeli na kupokea miingizo ya picha iliyolindwa.
  • Mteja na UI ya ndani: inajumuisha mazungumzo ya terminali, UI ya kivinjari, kurasa za hali, vipimo vya utendaji vinavyotokana na mtiririko, na proksi inayoweka ufunguo wa upande wa juu nje ya kivinjari.

Vipimo vilivyoripotiwa na mradi vinajumuisha hadi tokeni 3,882 za kujaza awali kwa sekunde kwa kidokezo cha 30K chenye GCS=8192, tokeni 97.4 za kusimbua kwa sekunde zikiwa na kina cha MTP cha 4 kwenye muktadha wa 30K, na tokeni 90.1 kwa sekunde kwenye muktadha wa 114K. Angalia docs/MEASURED.md kwa chanzo na tahadhari, badala ya kuchukulia takwimu hizi kuwa dhamana.

Mahitaji na upangaji wa uwezo

Kabla ya kuanza, hakikisha mazingira yako yanatimiza mahitaji yote yafuatayo:

  • Mpango wa Colab unaoweza kutenga A100.
  • Aina ya mashine ya HIGH_RAM. A100 ya kawaida ya GB 40 haiwezi kupakia modeli hii.
  • Takriban nafasi ya diski ya Colab ya GiB 110 kwa ajili ya uzani.
  • Zana ya mstari wa amri ya Google Colab, iliyosakinishwa kwa uv tool install google-colab-cli.
  • Kwa hiari, GitHub CLI ikiwa unapanga kufork au kusukuma hazina.
uv tool install google-colab-cli

Sharti la High-RAM ni la lazima. Usitambue kadi inayofaa kwa kutafuta “80” kwenye matokeo ya maunzi, kwa sababu A100 inaweza kuripoti uwezo wa kukokotoa sm_80 hata ikiwa ina VRAM ya GB 40 pekee. collabosm badala yake hulinganisha thamani iliyoripotiwa ya vram_GiB.

Mradi ulitengenezwa kwenye kiwango cha Colab Pro chenye takriban vitengo 200 vya compute kwa mwezi. Gharama yake iliyopimwa ya A100 High-RAM ilikuwa CU 7.52 kwa saa, takriban $0.75 kwa saa katika mazingira yaliyorekodiwa. Bei na upatikanaji wa mgao vinaweza kubadilika bila kutegemea hazina.

Anzisha seva

1. Fungua saraka ya hazina

Pakua au clone hazina ya collabosm, kisha endesha amri zifuatazo kutoka kwenye saraka yake ya mzizi. Hati hutegemea njia zinazohusiana na hazina kama scripts/up.sh, scripts/bootstrap.sh, na scripts/serve.sh.

2. Tenga rasilimali, andaa, na toa huduma

bash scripts/up.sh

Amri hii moja hurejesha assignment iliyopo inapowezekana au huunda assignment mpya ya High-RAM, hupakia mradi, husakinisha runtime yenye toleo lililobandikwa, hupakua uzani wenye toleo lililobandikwa, huwasha API, huanzisha handaki la Cloudflare, na husubiri ukaguzi wa afya ufanikiwe.

Uendeshaji uliofanikiwa hutoka kwa hali 0 tu baada ya API na URL ya handaki la umma kuwa tayari. Amri huchapisha URL ya handaki na ufunguo wa API. Ufunguo pia huhifadhiwa kwenye VM katika /content/api-key.txt.

Runtime huchaguliwa kutoka kwenye wheel ya ExLlamaV3 iliyojengwa awali na yenye toleo lililobandikwa, inayolingana na mazingira ya Colab ya Python, PyTorch, na CUDA. Uzani huchukuliwa kutoka Hugging Face kwenye revision iliyobandikwa. Ikiwa njia ya upakuaji ya Xet itakwama, README hutambua HF_HUB_DISABLE_XET=1 kama njia mbadala.

3. Rekodi mipangilio ya muunganisho

base_url = https://<host>.trycloudflare.com/v1
api_key  = <printed API key>
model    = qwen3.8-flash-next-exl3

Jina la mwenyeji la handaki la haraka linaweza kubadilika kati ya uzinduzi. Kwa jina la mwenyeji thabiti, sanidi handaki la Cloudflare lililotajwa kwa TUNNEL_TOKEN na ulihusishe na PUBLIC_URL kwa anwani inayoonyeshwa kwenye matokeo ya hali.

4. Kagua usanidi unaoendesha

Omba GET /v1/status ili kuona vigezo ambavyo mchakato unaoendesha ulipokea kwa kweli, ikiwemo mipangilio ya akiba, vigezo vya uzinduzi, muda wa uendeshaji, upatikanaji wa maono, na sera ya miingizo ya picha.

Hazina inaeleza kuwa chaguo-msingi zake za sasa hazijathibitishwa zote kwa pamoja. Kagua endpoint hai ya hali na uangalie docs/MEASURED.md kabla ya kudhani kuwa mchanganyiko fulani umethibitishwa.

Sanidi akiba na uzalishaji

Vidhibiti vyote vikuu vya kuanzisha hupitishwa kama vigeu vya mazingira kwa scripts/up.sh. Kwa mfano:

SESSION=mybox CACHE_SIZE=524288 CPU_CACHE_GB=8 bash scripts/up.sh
  • SESSION: jina la kipindi cha ndani; chaguo-msingi ni collabosm.
  • CACHE_SIZE: jumla ya tokeni za KV katika kazi zote; chaguo-msingi ni 500224 na lazima iwe kizidisho cha 256.
  • CACHE_QUANT: upana wa biti wa akiba ya KV; chaguo-msingi ni 4, na thamani kutoka 2 hadi 8 zinaruhusiwa.
  • CPU_CACHE_GB: akiba ya kurasa za KV ya kiwango cha pili katika RAM iliyobandikwa; chaguo-msingi ni 32 GiB, ambapo 0 huizima.
  • RECURRENT_CACHE_GB: hifadhi ya RAM ya mashine kwa checkpoint za Gated-DeltaNet; chaguo-msingi ni 24 GiB.
  • GCS: ukubwa wa vipande vya jenereta na kidhibiti kikuu cha utendaji wa prefill; chaguo-msingi ni 8192.
  • NDT: kina cha rasimu ya utabiri wa tokeni nyingi; chaguo-msingi ni 4.
  • RUNTIME: wheel kwa runtime iliyojengwa tayari au source kwa usanidi unaotumia msimbo chanzi.
  • TUNNEL_TOKEN: tokeni ya hiari ya tunnel yenye jina.

Akiba za RAM ya mashine si nafasi ya ziada isiyokuwa na gharama. Akiba chaguo-msingi ya CPU hutengewa kikamilifu kama kumbukumbu iliyobandikwa, na akiba ya recurrent pia hutumia kiasi kikubwa cha RAM. Zinafanya kazi pamoja na jedwali la n-gram la GiB 36.4 lililoandikwa kwenye hazina.

Kiwango cha RAM iliyobandikwa huboresha muda wa kuendelea kwa mazungumzo yasiyotumika ambayo kurasa zake zisizorejelewa ziliondolewa. Hakiwazii idadi ya miktadha inayoweza kuwa hai kwa wakati mmoja, kwa sababu kurasa hai haziwezi kuondolewa kana kwamba RAM ya mashine ni swap ya kawaida.

Itishe API inayooana na OpenAI

Orodhesha modeli

curl https://<host>.trycloudflare.com/v1/models \
  -H "Authorization: Bearer <api-key>"

Endpoint hiyo hurejesha kitambulisho kimoja cha modeli, qwen3.8-flash-next-exl3. Uthibitishaji unahitajika kwa njia hii ya API, huku /health ikiwa haina uthibitishaji na ikirejesha ok kama maandishi wazi.

Unda ukamilishaji wa mazungumzo

curl https://<host>.trycloudflare.com/v1/chat/completions \
  -H "Authorization: Bearer <api-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen3.8-flash-next-exl3",
    "messages": [
      {"role": "user", "content": "Reply with exactly: pong"}
    ],
    "max_tokens": 16
  }'

Kiolesura cha mazungumzo hurejesha maudhui chini ya choices[].message.content, sababu ya kumaliza ya stop au length, na taarifa za matumizi ambazo zinaweza kujumuisha tokeni za prompt zilizowekwa kwenye akiba.

Tiririsha ukamilishaji

Weka stream kuwa true ili kupokea Matukio Yanayotumwa na Seva wakati modeli inasimbua. Kwa ukamilishaji wa mazungumzo, mtiririko huisha kwa [DONE]. Kuweka stream_options.include_usage huomba data ya matumizi katika jibu linalotiririshwa.

{
  "model": "qwen3.8-flash-next-exl3",
  "messages": [{"role": "user", "content": "Explain prompt caching briefly."}],
  "stream": true,
  "stream_options": {"include_usage": true},
  "max_completion_tokens": 200
}

Endpoint ya /v1/responses pia inasaidia utiririshaji. Mfuatano wake wa matukio unajumuisha matukio ya uundaji, maendeleo, kipengee cha towe, sehemu ya maudhui, sehemu ya maandishi, ukamilishaji, na jibu la mwisho. Kila tukio linalotiririshwa hubeba sequence_number inayoongezeka bila kurudi nyuma, huku delta zikibeba faharasa za kipengee na maudhui ambazo wateja wanahitaji ili kuziunganisha kwa usahihi.

Tumia hali ya kufikiri

Kufikiri kumezimwa kwa chaguo-msingi ili kuendana na wateja wa kawaida wa mazungumzo. Kuiwezesha, tumia enable_thinking: true au thamani inayotumika ya reasoning_effort ya xhigh, medium, au low. Kwenye kiolesura cha mazungumzo, mfuatano wa hoja hurejeshwa kivyake katika message.reasoning_content na hauingii kwenye uga wa kawaida wa maudhui.

temperature na top_p zinakubaliwa lakini kwa sasa hazitumiki kwa sababu seva huunda kazi zenye sampler=None. Vidhibiti vya kufikiri, max_tokens, na mifuatano ya kusitisha hufanya kazi.

Tumia mteja aliyejumuishwa

Mteja wa ndani collabosm.py hutumia maktaba ya kawaida ya Python pekee na hauhitaji usakinishaji tofauti. Anzisha usanidi wake kwa endpoint ya tunnel na ufunguo uliotengenezwa:

python collabosm.py config --init \
  --endpoint https://<host>.trycloudflare.com/v1 \
  --api-key <key>

Kisha unaweza kuzungumza kutoka kwenye terminali au kuzindua kiolesura cha kivinjari cha ndani:

python collabosm.py chat "hello"
python collabosm.py ui
python collabosm.py start

ui huhudumia ukurasa na proksi kwenye http://127.0.0.1:8790. start hufungua madirisha ya mazungumzo na hali. Mteja kwa makusudi haianzishi wala kusimamisha VM ya Colab, kwa hiyo kuifungua hakuwezi kutumia vitengo vya kompyuta peke yake.

Mpe mteja aliyepo anayeoana na OpenAI proksi ya ndani badala ya endpoint ya VM unapotaka proksi iingize ufunguo halisi wa bearer:

base URL : http://127.0.0.1:8790/v1
API key  : anything
model    : qwen3.8-flash-next-exl3

Muundo huu huweka ufunguo halisi ndani ya mchakato wa proksi ya ndani, huepuka sera pana ya CORS, na huruhusu kiolesura cha kivinjari kusasishwa bila kutegemea VM.

Jaribu itifaki bila GPU

Tumia stub ya uundaji ili kuthibitisha tabia ya maombi na utiririshaji bila kulipia A100 au kupakua uzito wa modeli:

python scripts/dev_stub.py --port 8099 --chunk 24 --delay 0.01
python scripts/check_surface.py --base http://127.0.0.1:8099/v1

Stub huleta kishughulikiaji halisi cha usafirishaji na kubadilisha tu chaguo lake la utendaji wa kipande cha injini. Kikagua uso hufanya ukaguzi 13, ikijumuisha delta za mapema, matukio ya mwisho, matokeo yanayolingana ya chat na Responses, faharasa za vipengee zinazohitajika, na nambari za mfuatano zinazoendelea kwa mpangilio. Hutoka kwa hali 1 ukaguzi unaposhindwa.

Ongeza --think kwenye amri ya stub ili kujaribu mzunguko wa maisha wa kipengee cha reasoning. Hii ni muhimu hasa kabla ya kubadilisha maumbo ya matukio ya mtiririko au kuunganisha wateja madhubuti kama Codex CLI.

Washa na ujaribu vision kwa uangalifu

Pakiti ya modeli ni ya aina nyingi za data, lakini vision imezimwa kwa chaguo-msingi kwa sababu gharama ya ziada ya VRAM ya mnara wa vision haijapimwa kwenye kadi ambayo tayari imejazwa kwa kiwango kikubwa. Washa kipengee tofauti cha vision waziwazi:

VISION=1 bash scripts/up.sh

Vidhibiti vya hiari vya picha vinajumuisha:

IMAGE_URLS=1
MAX_IMAGE_BYTES=12582912
MAX_IMAGES=8

Lahaja zote mbili zinazotumika za API zinakubali sehemu za kawaida za picha za OpenAI. Data URL zinakubaliwa vision inapowashwa. URL za picha za mbali za HTTP au HTTPS hubaki zimezimwa isipokuwa IMAGE_URLS=1.

{
  "role": "user",
  "content": [
    {"type": "text", "text": "What colour is this image?"},
    {
      "type": "image_url",
      "image_url": {"url": "data:image/png;base64,..."}
    }
  ]
}

URL za mbali zinapowashwa, seva hutatua jina la mwenyeji na huhitaji kila anwani iweze kuelekezwa kimataifa. Hukataa anwani za loopback, za faragha, za kiungo cha ndani, na za metadata, na haifuati uelekezaji upya. Njia za mfumo wa faili hazikubaliki kamwe. Picha haiwezi kupachikwa, seva hurudisha hitilafu ya JSON 400 yenye aina vision_unavailable badala ya kupuuza picha kimya kimya.

Angalia GET /v1/status ili kubaini kama vision inatumika, kisha thibitisha tabia iliyowashwa au iliyokataliwa kimakusudi kwa:

python scripts/check_vision.py \
  --base https://<host>.trycloudflare.com/v1 \
  --key <key>

Vidokezo vya wakati mmoja na utendaji

API hutumia jenereta moja ya muda mrefu inayolindwa na kufuli. Kwa hiyo maombi huendeshwa kwa mfuatano: mitiririko mingi huwekwa kwenye foleni badala ya kutenganishwa kwa usimbuaji wa wakati mmoja. Ukubwa wa kundi ulio zaidi ya mmoja haujajaribiwa, na vipimo vilivyochapishwa vilitumia nafasi moja.

Uwezo uliopimwa wa vipindi hai hutegemea sana urefu wa muktadha:

  • Tokeni 500K kwa kila mtiririko: kipindi 1 hai.
  • Tokeni 262K kwa kila mtiririko: vipindi 2 hai.
  • Tokeni 131K kwa kila mtiririko: vipindi 5 hai.
  • Tokeni 32K kwa kila mtiririko: vipindi 11 hai.
  • Tokeni 16K kwa kila mtiririko: vipindi 14 hai.

Kila nafasi hai hutumia takriban MiB 546 ya hali ya Gated-DeltaNet kabla ya hifadhi ya KV. Kwa miktadha mifupi, hali ya kujirudia huwa kikwazo; masafa ya vitendo yaliyoandikwa ni takriban nafasi 8 hadi 14 hai, ingawa maombi bado huendeshwa kwa mfuatano na kufuli ya sasa ya API.

Kwa utendaji wa prefill, GCS ilikuwa kigezo chenye athari kubwa zaidi kilichopatikana na mradi. Hata hivyo, mipangilio mikubwa au iliyobadilishwa ya kache inapaswa kuthibitishwa dhidi ya matumizi ya VRAM na RAM ya mwenyeji badala ya kunakiliwa bila ukaguzi.

Epuka kuunda Generator mpya kwa kila ombi. Jedwali la kurasa na kache ya kurasa za CPU huundwa ndani ya Generator.__init__; kuijenga upya kungetupa kimya kimya matumizi ya kache ya vidokezo na kulazimisha prefill zinazorudiwa. Seva iliyojumuishwa tayari hudumisha hali sahihi ya muda mrefu.

Kutatua matatizo

CLI inasema hakuna vipindi vinavyotumika

Rekodi ya kipindi cha ndani inaweza kutoweka tokeni ya proksi ya wakati wa utekelezaji inapoisha muda, hata VM ikiwa bado inatumika na inatozwa. Tumia mtiririko wa kurejesha wa hazina badala ya kuunda VM nyingine mwenyewe. scripts/restore.py huuliza ugawaji wa upande wa seva na kuunganisha tena mfano uliotengwa.

Modeli haitoshei

Thibitisha kuwa mazingira ya utekelezaji yana takriban GB 80 za VRAM na ni umbo la High-RAM. Skripti ya kurejesha imeundwa kukataa na kusimamisha ugawaji wa GB 40 kabla ya kupakia modeli.

API iko sawa lakini hakuna URL ya umma inayoonekana

up.sh hutofautisha VM yenye afya isiyo na URL ya tunnel iliyochapishwa na utayari kamili. Hali ya kutoka 9 inaashiria hali hii. Kagua kumbukumbu za utoaji huduma na tunnel badala ya kudhani kuwa endpoint inafikika hadharani.

Maombi yanaonekana kupuuza vidhibiti vya sampuli

Hili linatarajiwa kwa temperature na top_p kwenye seva ya sasa. Hupitiwa, lakini haziwasilishwi kwa sampuli.

Upatanifu wa mtiririko unavurugika

Rudia tatizo kwa scripts/dev_stub.py, kisha endesha scripts/check_surface.py. Kishughulikiaji halisi kinajaribiwa, kwa hiyo hii hunasa kurudi nyuma kwa itifaki bila kusanidi modeli.

Zima VM na dhibiti gharama

Unapomaliza, simamisha mara moja mazingira ya utekelezaji yanayotozwa kwa muda:

bash scripts/down.sh

Hii ndiyo amri muhimu zaidi ya mradi ya kudhibiti gharama. Kufunga kivinjari, kupoteza rekodi ya CLI ya ndani, au kukata muunganisho kutoka Colab hakuthibitishi kuwa utozaji umesimama.

Sehemu ya hiari ya udhibiti wa frontend huongeza uthibitishaji kabla ya kusanidi, leja ya ndani ya CU, kusimamisha kiotomatiki inapokuwa bila shughuli, muda wa juu wa kipindi, kughairi, na usafishaji wakati usanidi unashindwa baada ya ugawaji. Unaweza kufanya mazoezi ya mtiririko huo bila kadi au vitengo vya compute:

python frontend/server.py --fake-provision
python frontend/server.py --mock
python scripts/dev_stub.py --port 8099 &
python frontend/server.py --mock --backend http://127.0.0.1:8099

Hitimisho

collabosm inashughulikia sehemu ngumu za kuendesha Qwen3.8-Flash-Next kwenye Colab: kuomba umbo sahihi la A100, kurejesha mgao ulioachwa bila mmiliki, kusakinisha runtime inayolingana ya ExLlamaV3, kupakia uzani uliobandikwa, kuhifadhi akiba, kufichua handaki lililolindwa, na kutoa lahaja mbili za API zinazoendana na OpenAI.

Anza kwa bash scripts/up.sh, thibitisha usanidi unaotumika kupitia /v1/status, unganisha kupitia endpoint ya /v1 iliyoonyeshwa, na kila mara malizia kwa bash scripts/down.sh. Kwa majaribio yanayofanana na mazingira ya uzalishaji, zingatia hasa maombi yaliyopangwa kwa mfuatano, vidhibiti vya sampuli ambavyo havijatekelezwa, gharama za kumbukumbu za akiba, matumizi ya hiari ya VRAM ya vision, na tofauti kati ya kuendelea kwa akiba isiyotumika na uwezo halisi wa kipindi kinachoendelea.