
Rizzo Flow ni nini?
Rizzo Flow ni mfumo wa chanzo huria unaotanguliza matumizi ya ndani, unaobadilisha maandishi yasiyo na muundo au hali ya JSON kuwa maamuzi yenye aina na uwezekano. Badala ya kuiomba modeli ya lugha itengeneze nathari au JSON tokeni baada ya tokeni, husoma uwezekano wa modeli kwa seti iliyowekewa mipaka ya herufi za majibu baada ya upitishaji wa mbele.
Muundo huu unaunga mkono maamuzi kama haya:
- Jibu la boolean lenye uwezekano wa
true. - Chaguo kati ya machaguo yenye majina, likiwa na uwezekano kwa kila chaguo.
- Alama katika viwango vya rubriki vilivyopangwa.
- Makadirio ya nambari yanayotegemea viwakilishi maalum.
Rizzo Flow huendeshwa kwenye vifaa vyako kupitia llama.cpp. Inaweza kutumia Apple Metal, NVIDIA CUDA, Vulkan, AMD ROCm, Intel SYCL, au utekelezaji wa CPU. Pia hutoa kiolesura cha HTTP kinachooana na Jev, hivyo programu zinazooana zinaweza kulenga URL ya ndani badala ya huduma inayopangishwa.
Rizzo Flow ni mradi huru. Unazalisha upya muundo wa kiolesura ulio nyuma ya Jev, si usanifu au mafunzo ya umiliki ya Jev. Uwezekano wake haujarekebishwa isipokuwa uurekebishe kwa data yako mwenyewe inayowakilisha matumizi halisi.
Jinsi maamuzi ya tokeni sifuri yanavyofanya kazi
Kwa kila ombi, Rizzo Flow huweka hali mwanzoni mwa kidokezo na kuichakata mara moja. Maswali kisha hutoka kwenye akiba ya hali iliyoshirikiwa. Kila jibu linalowezekana hupewa herufi kubwa, na mfumo husoma tu logits za herufi zinazoruhusiwa.
- Hali hubadilishwa kuwa maandishi na kujazwa mapema kwenye akiba ya KV ya modeli.
- Kila swali huwakilishwa kama tatizo la chaguo nyingi lenye vikwazo.
- Maswali yanayoshiriki hali ileile hutathminiwa katika vikundi vidogo.
- Logits za majibu yanayoruhusiwa hubadilishwa kuwa uwezekano kwa kutumia softmax.
- Msimbo wa Python hurejesha data ya boolean, chaguo, alama, au nambari iliyothibitishwa na schema.
Hakuna mzunguko wa usimbaji, maandishi yaliyosanifiwa, uchanganuzi wa matokeo, au urekebishaji wa JSON. Hata hivyo, tokeni sifuri zilizozalishwa hazimaanishi ukokotoaji sifuri: hali na vidokezo vya maswali bado vinahitaji uelekezaji wa modeli.
Vipengele muhimu
- Uendeshaji wa ndani kabisa: uelekezaji wa modeli hufanyika kwenye mashine yako.
- Matokeo yenye aina: programu hupokea thamani zilizopangwa badala ya nathari iliyozalishwa.
- Mgawanyo wa uwezekano: matokeo ya chaguo na alama huonyesha uwezekano badala ya jibu la argmax pekee.
- Misingi minne asilia: boolean, chaguo, alama, na nambari.
- Kujizuia kwa hiari: API asilia inaweza kuripoti ushahidi usiotosha, kutokuwa na uhakika, au matokeo ya nambari yaliyo nje ya masafa.
- Kupanga kwa hali iliyoshirikiwa: maswali kadhaa katika ombi moja hutumia tena akiba ya KV ya hali.
- Vituo vinavyooana na Jev: wateja waliopo wanaweza kutumia
/v1/systemonena/v1/models. - Modeli yenye muktadha mrefu: Spark-X2.5 inaauni muktadha asilia wa hadi tokeni 1,048,576, ingawa Rizzo Flow kwa kawaida hutumia tokeni 8,192 kwa kila swali.
- Zana za ndani: seva inajumuisha uwanja wa majaribio, nyaraka shirikishi za OpenAPI, na onyesho la Snake.
Mahitaji ya awali
Kabla ya kusakinisha Rizzo Flow, hakikisha una:
- Python 3.11 au mpya zaidi.
- Git.
- uv kwa usimamizi wa vitegemezi na mazingira.
- Nafasi ya kutosha kwenye diski kwa modeli na runtime iliyochaguliwa.
Upakuaji wa kawaida wa modeli ya Spark-X2.5-4B Q8_0 ni takriban GB 4.4. Upakuaji wa runtime hutofautiana kulingana na jukwaa, kutoka takriban MB 11 kwenye Mac hadi karibu MB 570 kwa kifurushi cha CUDA.
Sakinisha na uwashe seva
Clone hazina, landanisha vitegemezi vyake vilivyofungwa, pakua runtime na modeli ya kawaida, kisha uwashe huduma:
git clone https://github.com/Rizzo-AI-Academy/rizzo-flow
cd rizzo-flow
uv sync --locked
uv run rizzo download
uv run rizzo serve
Amri ya upakuaji huchagua kifurushi rasmi cha llama.cpp kilichojengwa awali kwa mashine ya sasa, huthibitisha checksum yake ya SHA-256, na kupakua Spark-X2.5-4B Q8_0. Upakuaji uliokatizwa unaweza kuendelea ulipoishia.
Kupakia modeli huchukua takriban sekunde kumi kulingana na nyaraka za mradi. Huduma ikiwa tayari, fungua:
http://127.0.0.1:8017/playgroundkwa uwanja wa majaribio wa kuona.http://127.0.0.1:8017/docskwa nyaraka shirikishi za OpenAPI.http://127.0.0.1:8017/snakekwa onyesho la Snake.
Uwanja wa majaribio unajumuisha mifano iliyo tayari, kiunda maswali, vihariri ghafi vya JSON kwa API zote mbili, pau za uwezekano, maelezo ya muda, na amri sawa za cURL. Hautumii simu za nje na unaweza kubadilishwa kati ya Kiingereza na Kiitalia.
Tumia modeli ndogo zaidi
Kwa upakuaji wa kwanza wa haraka zaidi, sakinisha modeli ya 1.7B:
uv run rizzo download --size 1.7b
uv run rizzo serve --size 1.7b
Faili ya 1.7B Q8_0 ina ukubwa wa takriban GB 1.8 na hufanya kazi kwa kasi karibu mara mbili, lakini README inaonya kuwa si sahihi sana. Pia inaelekea kuchagua chaguo la ushahidi usiotosha wakati kujizuia kumewezeshwa, kwa hivyo ijaribu kwa makini kwenye mzigo wako wa kazi.
Fanya uamuzi wako wa kwanza
Jaribio la haraka zaidi la API hutumia endpoint ya POST /v1/systemone inayooana na Jev. Ombi lifuatalo linauliza ikiwa ujumbe wa usaidizi unaonyesha uharaka:
curl http://127.0.0.1:8017/v1/systemone \
-H 'Content-Type: application/json' \
-d '{
"state": "Help! My payouts have been failing for 3 days.",
"model": "rizzo-latest",
"questions": {
"is_urgent": {
"type": "noul",
"instructions": "Does this convey urgency?"
}
}
}'
Matokeo ya noul ni uwezekano wa jibu la ndiyo, unaowakilishwa kama nambari kutoka sufuri hadi moja. Jibu huripoti kitambulisho halisi cha modeli ya ndani, hata ombi linapotumia rizzo-latest au lakabu ya kurahisisha.
Uliza maswali kadhaa katika ombi moja
Rizzo Flow imeundwa kutathmini maswali mengi dhidi ya hali ileile. Kuyachanganya katika ombi moja huruhusu maswali kushiriki akiba ya KV ya hali hiyo:
curl http://127.0.0.1:8017/v1/systemone \
-H 'Content-Type: application/json' \
-d '{
"state": "Help! My payouts have been failing for 3 days.",
"model": "rizzo-latest",
"questions": {
"is_urgent": {
"type": "noul",
"instructions": "Does this convey urgency?"
},
"department": {
"type": "choice",
"instructions": "Which team should handle this?",
"criteria": {
"billing": "Payments, invoicing, refunds",
"technical": "Bugs and outages",
"sales": null
}
},
"frustration": {
"type": "score",
"instructions": "How frustrated is the customer?",
"criteria": ["Calm", "Frustrated", "Very angry"]
}
}
}'
Jibu lina uwezekano wa ndiyo kwa noul, uwezekano wa chaguo zote, na alama yenye uzani wa uwezekano pamoja na ufafanuzi wake. Thamani ya usage.output_tokens huwa sifuri kila wakati.
Tumia API asilia ya maamuzi
Endpoint asilia ya POST /v1/decisions hufichua seti kamili ya vipengele vya Rizzo Flow, ikijumuisha maswali ya nambari na kujizuia. Aina zake nne za maswali ni:
boolean: hurudisha thamani yenye aina maalum na uwezekano wa kuwa kweli.choice: hurudisha chaguo lililochaguliwa na mgawanyo kamili wa chaguo.score: hurudisha alama zenye uzani wa uwezekano na zilizorekebishwa katika viwango vilivyopangwa.numeric: hurudisha makadirio, wastani wa kati, mtawanyiko, na uwezekano wa kuwa chini au juu ya masafa.
Kadiria thamani ya nambari kutoka kwenye alama za rejea
Swali la nambari hufafanua alama za rejea zinazowakilisha thamani zinazoongezeka. Mfano huu unauliza modeli isome asilimia ya kujazwa iliyoripotiwa:
curl http://127.0.0.1:8017/v1/decisions \
-H 'Content-Type: application/json' \
-d '{
"state": {"measurement": 75, "unit": "percent"},
"questions": {
"fill": {
"type": "numeric",
"instructions": "Read the reported fill percentage.",
"unit": "percent",
"anchors": [
{"value": 0, "description": "Empty"},
{"value": 50, "description": "Half full"},
{"value": 75, "description": "Three quarters full"},
{"value": 100, "description": "Completely full"}
]
}
}
}'
Alama za rejea ni thamani za kuwakilisha, si vipindi vya kitakwimu. Wastani ulioripotiwa hubaki kati ya alama ya chini na ya juu, huku kwantili zikieleza mgawanyo wa uwezekano wa kipekee kwenye alama hizo.
Elewa kujizuia
Maswali asilia huruhusu kujizuia kwa chaguo-msingi. Rizzo Flow huongeza chaguo la ndani la ushahidi usiotosha, huku maswali ya nambari yakijumuisha pia uwezekano wa kuwa chini ya masafa na juu ya masafa. Kulingana na chaguo lililoteuliwa na sera, thamani kuu inaweza kuwa null na hali inaweza kuripoti insufficient_evidence, out_of_range, au uncertain.
Muundo unaooana na Jev hautumii kujizuia. Matokeo yake ya ndiyo/hapana hukokotolewa kwa kutumia chaguo mbili pekee. Ukitumia modeli ndogo ya 1.7B kupitia API asilia, zingatia kuweka allow_abstain kuwa false, kama mradi unavyopendekeza, na uthibitishe athari yake kwenye data yako.
Endesha maamuzi bila seva
Kwa hati, majaribio, au tathmini za mara moja, pitisha faili la ombi moja kwa moja kwenye CLI:
uv run rizzo decide examples/ticket.json
Pia unaweza kuwasha mazingira pepe na kuacha kiambishi awali cha uv run:
source .venv/bin/activate
rizzo decide examples/ticket.json
Kwenye PowerShell, liwashe kwa:
.venv\Scripts\activate
Chagua modeli, quantization na kifaa
Usanidi chaguo-msingi hutumia Spark-X2.5-4B Q8_0. Quantization nyingine zilizoandikwa ni Q4_K_M na BF16:
- 4B Q8_0: takriban GB 4.4 na ndiyo usanidi chaguo-msingi.
- 4B Q4_K_M: takriban GB 2.6.
- 4B BF16: takriban GB 8.2.
- 1.7B Q8_0: takriban GB 1.8.
- 1.7B Q4_K_M: takriban GB 1.1.
- 1.7B BF16: takriban GB 3.4.
Kagua vifaa vinavyoonekana kwa runtime kabla ya kuanzisha seva:
uv run rizzo devices
Kisha unaweza kuchagua familia ya kifaa waziwazi:
uv run rizzo serve --device cuda
uv run rizzo serve --device vulkan
uv run rizzo serve --device metal
uv run rizzo serve --device cpu
Familia za vifaa zilizotajwa ni mahitaji, si vidokezo tu, hivyo Rizzo Flow haishushi kimya kimya familia ya GPU iliyoainishwa wazi hadi CPU. Vifurushi vya ziada vya wakati wa utekelezaji vinaweza kupakuliwa kando:
uv run rizzo download --only runtime --runtime rocm
uv run rizzo download --only runtime --runtime sycl
uv run rizzo download --only runtime --runtime cpu
Usanidi wa hali ya juu na vidokezo vya matumizi
Husisha maswali ya kundi moja
Weka maswali yote kuhusu hali ileile katika ombi moja. Hili ni msingi wa muundo wa Rizzo Flow: hali hujazwa awali mara moja, na viambishi vya maswali hutathminiwa katika makundi madogo ya utekelezaji. Ukubwa chaguomsingi wa kundi dogo la maswali ni manne na unaweza kubadilishwa kwa --batch-size.
uv run rizzo serve --batch-size 8
Makundi makubwa si bora kiotomatiki. Linganisha muda wa kusubiri na matumizi ya kumbukumbu kwenye mashine lengwa.
Ongeza muktadha kwa uangalifu
Ingawa Spark-X2.5 ina muktadha asilia wa tokeni milioni moja, seva hutumia chaguo-msingi la tokeni 8,192 kwa kila swali. Ongeza kikomo kwa --ctx:
uv run rizzo serve --ctx 32768
Akiba ya KV hutengewa kumbukumbu wakati wa kuanza. Kwa modeli ya 4B, README inakadiria takriban KiB 144 kwa kila tokeni, au karibu GiB 1.4 kwenye kikomo chaguomsingi na GiB 4.8 kwenye tokeni 32,000. Ingizo linalozidi kikomo kilichosanidiwa hukataliwa badala ya kupunguzwa. Zaidi ya takriban tokeni 60,000, kikomo cha hali cha KB 256 katika schema.py cha hazina pia lazima kiongezwe.
Linda vituo vinavyooana
Weka RIZZO_API_KEY kabla ya kuanzisha seva ili kuhitaji uthibitishaji wa Bearer kwenye vituo vinavyooana na Jev:
export RIZZO_API_KEY="replace-with-a-secret"
uv run rizzo serve
Kwenye Windows PowerShell:
$env:RIZZO_API_KEY = "replace-with-a-secret"
uv run rizzo serve
Hitilafu za uthibitishaji hurudisha HTTP 401. Data batili ya ombi inaweza kurudisha HTTP 422.
Elekeza mteja anayeoana
Mteja aliyebuniwa kwa TypeSafe API inayopangishwa anaweza kulenga huduma ya ndani kwa kubadilisha URL yake ya msingi:
export TYPESAFE_BASE_URL=http://127.0.0.1:8017
Mradi unaeleza kuwa usanidi huu wa kigezo cha mazingira umebuniwa kwa SDK rasmi, lakini bado haujajaribiwa nayo. Kiolesura kinaoana, lakini modeli ya ndani si Jev.
Tafsiri kwa usahihi thamani za ujasiri na uwezekano
Thamani ya ujasiri ya API inayoana inaeleza umbo la usambazaji wa chaguo. Si uwezekano uliothibitishwa kwamba jibu ni sahihi. Vivyo hivyo, uwezekano ghafi wa modeli unaweza kuwa wa kujiamini kupita kiasi au usiwe umewekwa kwenye kipimo sahihi.
Thibitisha maamuzi kwenye mkusanyiko wa data wenye lebo unaowakilisha matumizi halisi na uyapime kwa mazingira halisi ya utekelezaji inapohitajika. Seva inapokea faili ya urekebishaji kupitia --calibration:
uv run rizzo serve --calibration fit.json
Urekebishaji unahusishwa na faili ya modeli, wakati wa utekelezaji, upunguzaji wa usahihi, na mfumo wa vifaa uliotumika kuufanyia marekebisho. CUDA, Vulkan, na Metal zinaweza kufanya mizungusho tofauti, na upunguzaji wa usahihi unaweza kubadilisha uwezekano unaorudishwa.
Heshimu kikomo cha nafasi za majibu
Kila mgombea hupewa herufi moja kubwa, hivyo kusababisha kiwango cha juu cha nafasi 26 za majibu kwa kila swali. Chaguo za ndani za kujizuia kujibu na za masafa pia hutumia nafasi. Kwa hiyo, chaguo huunga mkono hadi chaguo 26 za kawaida bila kujizuia kujibu au 25 kukiwa na kujizuia kujibu. Maswali ya nambari yana viambatisho vichache vinavyopatikana kwa sababu chaguo za chini ya masafa, juu ya masafa, na za hiari za ushahidi usiotosha pia huchukua nafasi.
Tumia faili maalum ya modeli au muundo wa llama.cpp
Anzisha seva kwa faili maalum ya GGUF kwa kutumia --model:
uv run rizzo serve --model /path/to/model.gguf
Ili kutumia usakinishaji maalum wa llama.cpp, elekeza RIZZO_LLAMA_DIR kwenye saraka iliyo na libllama. README inahitaji commit ya llama.cpp 161755f kwa sababu vifungamanishi vimefungwa kwenye kichwa cha toleo hilo.
Chunguza onyesho la Snake
Ukurasa wa ndani wa Snake unaonyesha jinsi maamuzi yaliyoainishwa kwa aina yanaweza kudhibiti programu shirikishi. Kila harakati hutuma ombi moja la POST /v1/decisions lenye maelezo ya ubao na swali la chaguo linaloorodhesha harakati halali. Ukurasa huonyesha uwezekano wa majibu, logits, muda wa utekelezaji, na kumbukumbu ya maamuzi bila kuzalisha maandishi.
Onyesho hilo pia linaonyesha somo muhimu la uundaji wa modeli: uwakilishi wa ingizo ni muhimu. README inaripoti kuwa modeli ya 4B hufanya vizuri zaidi ikiwa na vihisi vilivyokokotolewa kwa kila harakati kuliko ikiwa na gridi ya ASCII pekee. Uchunguzi huo unatokana na idadi ndogo ya michezo isiyo rasmi na haupaswi kuchukuliwa kama kipimo cha utendaji.
Ukaguzi wa uendeshaji
Tumia GET /health kukagua asili ya modeli na heshi za faili. Miundo ya maombi na majibu pia inapatikana katika request.schema.json na response.schema.json. Kwa utekelezaji unaoweza kurudiwa, weka modeli, upunguzaji wa usahihi, wakati wa utekelezaji, mfumo wa nyuma, usanidi wa muktadha, na urekebishaji bila mabadiliko.
README inaripoti takriban milisekunde 50 kwa uamuzi mfupi unaotumia Spark-X2.5-4B Q8_0 kwenye RTX 5060 Ti, lakini hii inategemea vifaa na mzigo wa kazi. Nyaraka hizo pia zinabainisha kuwa usanidi wa Apple Silicon, AMD, Intel, Linux NVIDIA, na CPU haujapokea majaribio yenye usawa kikamilifu, hivyo pima mashine yako mwenyewe kabla ya kuweka matarajio ya muda wa kusubiri.
Hitimisho
Rizzo Flow hutoa kiolesura cha ndani kinachotumika kubadilisha hali isiyo na muundo kuwa maamuzi yaliyo na aina na ya uwezekano bila kuzalisha maandishi. Anza na playground, unganisha maswali yanayohusiana katika ombi moja, na utumie API asilia unapohitaji makadirio ya nambari au kujiepusha na uamuzi. Kabla ya kuitumia katika uzalishaji, jaribu usahihi, muda wa kusubiri, ulinganifu wa uwezekano, quantization, na tabia ya backend kwa data inayoakisi programu yako halisi.
