Ruka hadi maudhui makuu
Mafunzo ya AI

Fundisha Miundo ya Lugha yenye Mawakala kwa FlashREINFORCE

Jifunze jinsi FlashREINFORCE inavyofundisha mawakala wa miundo ya lugha kwa kutumia rollout moja kwa kila prompti, zawadi zinazowekwa katikati ya kundi, sampuli ya umuhimu wa tokeni, Sequence Trust Region, na uboreshaji wa wastani wa sampuli. Mafunzo haya yanashughulikia usakinishaji, mfano wa marejeleo wa CPU, mchakato wa masasisho yasiyosawazishwa, maandalizi ya kizindua cha Molt, na mwongozo wa vitendo wa uthabiti.

Fundisha Miundo ya Lugha yenye Mawakala kwa FlashREINFORCE

FlashREINFORCE ni nini?

FlashREINFORCE ni mfumo wa ujifunzaji wa kuimarisha usiohitaji mkosoaji, ulioundwa kwa ajili ya mafunzo yasiyosawazishwa ya miundo ya lugha yenye uwezo wa kutenda. Umeundwa kwa mzigo wa kazi wa hatua nyingi, ambapo mfuatano hukamilika kwa nyakati zisizo sawa kutokana na hoja zenye urefu tofauti, matumizi ya zana, au mwingiliano na mazingira.

Badala ya kuzalisha marudio kadhaa ya ndugu kwa kila kidokezo, FlashREINFORCE hutumia marudio moja kwa kila kidokezo. Kwa hiyo, kundi lenye mfuatano B linaweza kujumuisha vidokezo B tofauti, na mfuatano uliokamilika unaweza kumfikia mjifunzaji bila kusubiri majibu mengi ya kidokezo kilekile.

Hazina hii hutoa loss ya marejeleo ya PyTorch inayojitegemea, mfano wa sasisho la optimizer kwenye CPU, majaribio, vizindua vya Molt kwa R1 na Qwen2.5-Math, pamoja na mipangilio ya majaribio ya hoja, zana za Python, miundo ya mixture-of-experts, na ALFWorld. Vizindua kamili vya mafunzo yasiyosawazishwa hutumia Molt.

Ujifunzaji wa Kuimarisha Unapaswa Kufanya REINFORCE.

Kwa nini utumie marudio moja?

Mbinu zinazohusisha makundi hutegemea marudio mengi kutoka kwenye kidokezo kilekile. Katika mizigo ya kazi ya mawakala isiyosawazishwa, hitaji hilo linaweza kuanzisha vizuizi vya kusawazisha na kupunguza idadi ya vidokezo tofauti vinavyoshughulikiwa na bajeti maalum ya marudio.

Ujifunzaji wa marudio moja huondoa hitaji la marudio ndugu, lakini huleta matatizo matatu ya uthabiti:

  • Hakuna kundi la ndugu la kutengeneza msingi wa kiwango cha kidokezo.
  • Mfuatano uliokusanywa bila kusawazishwa huenda ulizalishwa na sera ya zamani ya tabia.
  • Mfuatano mirefu iliyoshindwa inaweza kutawala sasisho ikiwa kila tokeni itapewa uzito sawa wa kiwango cha kundi.

FlashREINFORCE hushughulikia matatizo haya kwa One-Batch REINFORCE, Sequence Trust Region, na Sample-Mean Optimization.

Vipengele vya msingi

1. One-Batch REINFORCE

Kwa kila kundi jipya, mjifunzaji huweka zawadi za namba katikati kwa vidokezo huru. Ikiwa R_i ni zawadi ya mfuatano i, advantage yake ni zawadi ya mfuatano ukiondoa wastani wa kundi:

mean_reward = sum(R_j for j in batch) / B
A_i = R_i - mean_reward

Mfuatano ulio juu ya wastani hupokea advantage chanya, huku ule ulio chini ya wastani ukipokea advantage hasi. Hii hutoa mrejesho wenye ishara bila kufundisha mkosoaji aliyejifunza. Mjifunzaji hufanya sasisho moja la optimizer kwenye kundi kisha kulitupa.

2. Sequence Trust Region

Kila mfuatano lazima uhifadhi uwezekano wa sera ya tabia iliyozalisha kila tokeni iliyochukuliwa. Mjifunzaji hukokotoa upya uwezekano wa sera ya sasa na kuunda uwiano wa umuhimu wa tokeni:

rho_i_t = exp(current_log_probability_i_t
              - behavior_log_probability_i_t)

Uwiano huu hurekebisha usambazaji wa vitendo vilivyochukuliwa katika historia iliyohifadhiwa. Hairekebishi ukweli kwamba historia yenyewe ilitokana na sera ya zamani ya tabia, kwa hiyo FlashREINFORCE pia hutathmini mkengeuko uliokusanyika katika mfuatano mzima.

Kwa kila kitendo kilichochukuliwa, hukokotoa makadirio ya Bernoulli KL kutokana na uwezekano wa tabia p na uwezekano wa sasa q:

d_i_t = p * log(p / q)
        + (1 - p) * log((1 - p) / (1 - q))

Thamani za tokeni hukokotolewa kwa wastani katika mfuatano. Mfuatano unakubaliwa tu wakati makadirio yake ya wastani hayazidi kizingiti cha uaminifu kilichosanidiwa:

mean_drift_i = sum(d_i_t for t in trajectory_i) / T_i
mask_i = 1 if mean_drift_i <= delta else 0

Mfuatano uliokataliwa hauchangii loss za tokeni. Kwa hiyo, uamuzi wa uaminifu hutumika kwa historia yote iliyohifadhiwa badala ya tokeni zilizotengwa.

3. Sample-Mean Optimization

Wastani wa kundi wa kiwango cha tokeni huwapa mfuatano mirefu ushawishi mkubwa kiotomatiki. Hilo linaweza kuwa na madhara wakati marudio marefu yaliyoshindwa yana hatua muhimu za kati lakini huishia kwa zawadi hasi.

FlashREINFORCE kwanza hukokotoa wastani wa michango ya tokeni ndani ya kila mfuatano, kisha hukokotoa wastani katika mfuatano:

trajectory_term_i = (
    mask_i * advantage_i / trajectory_length_i
    * sum(importance_ratio_i_t for each token t)
)
objective = sum(trajectory_term_i for i in batch) / B

Kwa hiyo kila mfuatano hupokea uzito wa 1/B bila kujali urefu wa jibu. Loss ya utekelezaji hutumia uwiano wa umuhimu uliotenganishwa na gradient. Mbinu ya msingi haitumii mkosoaji aliyejifunza, ukataji wa uwiano, wala upitishaji wa mbele wa modeli ya marejeleo.

Usakinishaji na usanidi wa ndani

Clone au pakua hazina ya FlashREINFORCE, ingia kwenye saraka yake kuu, kisha isakinishe katika hali ya kuhaririwa pamoja na vitegemezi vya majaribio:

pip install -e '.[test]'

Fuata kwa kuendesha mfano uliojumuishwa wa CPU:

python examples/toy_update.py

Mfano huu hukagua kwamba objective ya marejeleo inaweza kutoa sasisho la optimizer kwenye CPU. Ni mfano wa uthibitishaji wa utendaji, si urudiaji wa matokeo ya majaribio ya karatasi.

Hatimaye, endesha seti ya majaribio:

python -m pytest -q

Mfano na uendeshaji wa majaribio ukifanikiwa huthibitisha kwamba utekelezaji wa marejeleo wa ndani na vitegemezi vyake vinapatikana.

Chunguza utekelezaji wa marejeleo

Objective kuu ya marejeleo iko katika flashreinforce/loss.py. Inajumuisha shughuli zilizoelezwa kwenye karatasi na README:

  • Kuweka zawadi katikati katika kundi.
  • Usampulishaji wa umuhimu wa kiwango cha tokeni.
  • Uandikishaji wa uaminifu wa kiwango cha mfuatano.
  • Sample-mean optimization.
  • Uchujaji wa hiari wa tokeni za kushindwa unaotegemea entropy.

Anza na examples/toy_update.py ili kuona jinsi loss ya marejeleo inavyoshiriki katika sasisho la optimizer. Kisha kagua flashreinforce/loss.py ili kuhusisha tensor na mask za mfano na hatua binafsi za objective.

Mfano wa CPU ndiyo njia salama zaidi ya matumizi ya msingi kwa sababu hauhitaji miundombinu kamili ya usambazaji na uendeshaji.

Elewa sasisho lisilosawazisha la pasi moja

Sasisho la FlashREINFORCE katika mazingira ya uzalishaji hufuata hatua sita:

  1. Kusanya: Wafanyakazi wa uendeshaji huwasilisha kwa kujitegemea mfuatano mmoja uliokamilika kwa kila kidokezo. Kila mfuatano hujumuisha zawadi yake na uwezekano halisi wa sera ya tabia uliotumika kuchagua tokeni zake.
  2. Unda kundi: Mjifunzaji huchukua mfuatano B unaofuata iliyokamilika na kuweka zawadi zao katikati ili kupata faida zenye ishara.
  3. Sahihisha: Mjifunzaji hukokotoa upya uwezekano wa logi wa sera ya sasa na kuunda uwiano wa umuhimu wa tokeni.
  4. Amua uaminifu: Hukokotoa makadirio ya wastani ya KL ya vitendo vilivyochaguliwa kwa kila mfuatano, na kukubali mfuatano mzima tu ikiwa thamani hiyo iko ndani ya kizingiti kilichosanidiwa.
  5. Boresha: Hupata wastani ndani ya kila mfuatano uliokubaliwa, kisha wastani katika kundi, na kutekeleza hatua moja ya kiwezesha-uboreshaji.
  6. Tupa: Haichezi tena kundi lililokusanywa kwa masasisho ya ziada ya mjifunzaji.

Hatua ya mwisho ya kutupa ni sehemu muhimu ya mbinu hii. FlashREINFORCE hutumia sasisho moja la kundi zima kwa kila kundi jipya lililokusanywa, badala ya kutekeleza masasisho kadhaa ya minibatch kwa mfuatano kutoka kwenye picha ileile ya sera ya tabia.

Hakiki usanidi wa mafunzo ya Molt

Hazina hii inajumuisha scripts/train_molt.py kwa kuanzisha mafunzo kupitia utekelezaji wa Molt usiosawazisha. Kabla ya kutenga rasilimali kwa zoezi kamili la mafunzo, tumia hali yake ya majaribio kuona mapema bendera za mafunzo:

python scripts/train_molt.py --dry-run

Angalia docs/training.md kwa usanidi wa GPU, utayarishaji wa data, amri za mafunzo, ulinganifu wa karatasi na msimbo, pamoja na vikwazo vinavyojulikana vya urudiaji. Mwongozo wa examples/README.md una mipangilio ya awali ya kazi, majaribio ya kuondoa vipengele, na kizindua cha mkufunzi asilia chenye ukaguzi wa uwezo.

Vizindua vya R1 na Qwen2.5-Math vimewekwa matoleo maalum kwenye hazina. Mipangilio ya matumizi ya zana na ALFWorld pia inahitaji mawakala na mazingira yanayooana, kwa hiyo kagua mahitaji yao ya wakati wa utekelezaji kabla ya kuanzisha majaribio hayo.

Data ambayo kila mfuatano lazima ihifadhi

Sasisho linategemea taarifa inayorekodiwa wakati wa uzalishaji. Kwa kiwango cha chini, mtiririko wa kimawazo wa mafunzo unahitaji mfuatano kamili wa tokeni, zawadi yake ya nambari moja, na uwezekano wa tabia unaohusishwa na kila kitendo kilichochaguliwa. Kisha mjifunzaji hupata uwezekano unaolingana wa sera ya sasa kwa kutathmini vitendo na historia zilizohifadhiwa.

Usibadilishe uwezekano wa sampuli uliorekodiwa kwa uwezekano utakaojengwa upya baadaye. Tathmini ya baadaye ya modeli haihakikishiwi kutoa tena uwezekano ambao injini ya uelekezaji ilitumia wakati wa kuchukua sampuli.

Vidokezo vya hali ya juu vya uthabiti

Hifadhi wigo wa uchukuaji sampuli

Marekebisho sahihi ya umuhimu hudhani kuwa sera lengwa haitengi uwezekano nje ya wigo wa sera ya tabia. Kupunguza sampuli kwa top-k au top-p kwa ukali kunaweza kukiuka dhana hii. Kwa hiyo, mipangilio ya sampuli inapaswa kuchaguliwa kwa kuzingatia hitaji la wigo.

Usichukulie uchukuaji sampuli wa umuhimu wa tokeni kuwa marekebisho kamili ya mfuatano

Uwiano wa umuhimu wa tokeni husahihisha vitendo vilivyochaguliwa kwa kuzingatia historia zilizohifadhiwa. Haisahihishi usambazaji wa historia hizo. Tumia Eneo la Uaminifu la Mfuatano kuchuja mfuatano ambao mkengeuko wake uliokusanywa kutoka tabia hadi mjifunzaji ni mkubwa kupita kiasi.

Weka masasisho mapya

Tekeleza sasisho moja la kiwezesha-uboreshaji kwa kila kundi lililokusanywa, kisha litupilie mbali. Kutumia tena kundi lililopitwa na wakati kwa masasisho kadhaa ya mjifunzaji kunatoka kwenye mbinu ya pasi moja iliyoandikwa na kunaweza kuongeza kutolingana kwa sera.

Hifadhi uzani wa kiwango cha mfuatano

Pata wastani wa michango ya tokeni ndani ya kila mfuatano kabla ya kupata wastani wa mifuatano katika kundi. Kuweka tokeni zote halali katika wastani mmoja wa kundi kungeleta tena kizidishi cha urefu wa jibu na kuruhusu mifuatano mirefu kupewa uzani usio sawia.

Tafsiri kinyago cha uaminifu kwa usahihi

Eneo la Uaminifu la Mfuatano hufanya uamuzi mmoja wa kukubali mfuatano mzima. Ikiwa mfuatano unazidi kizingiti, hasara zote za tokeni zake huondolewa kwenye sasisho hilo.

Tenganisha uthibitishaji na urudiaji

Mfano wa CPU huthibitisha sasisho la kiwezesha-uboreshaji pekee. Kurudia matokeo ya utafiti kunahitaji usanidi wa GPU, data, modeli, wakala, mazingira na wakati wa utekelezaji usiosawazisha ulioandikwa katika miongozo ya mafunzo na mifano.

Maeneo ya matumizi yaliyoripotiwa

Majaribio yaliyoripotiwa yanahusu hoja za hisabati, matumizi ya zana ya Python ya zamu nyingi, mafunzo ya mchanganyiko wa wataalamu, na ufanyaji wa maamuzi shirikishi wa ALFWorld. README inaripoti mafunzo thabiti ya mlolongo mrefu wa mawazo hadi masasisho 6,000 kwa DeepSeek-R1-Distill-Qwen-1.5B, matokeo ya hoja za hisabati kwa Qwen2.5-Math-1.5B, majaribio ya zana ya Python kwa Qwen2.5-7B-Instruct na Qwen3-30B-A3B, na majaribio ya ALFWorld kwa Qwen2.5-7B-Instruct.

Matokeo haya yanaonyesha wigo uliokusudiwa wa mfumo, lakini hayapaswi kutarajiwa kutoka kwenye mfano mdogo wa sasisho la CPU.

Rasilimali muhimu

Hitimisho

FlashREINFORCE huunganisha ufunikaji wa vidokezo kwa mzunguko mmoja na sasisho fupi lisilotumia mkosoaji. Zawadi zinazozingatia kundi hutoa faida zenye ishara, sampuli ya umuhimu wa tokeni hushughulikia vitendo vilivyopitwa na wakati, Eneo la Uaminifu la Mfuatano hudhibiti mkengeuko uliokusanyika wa trajektoria, na uboreshaji wa wastani wa sampuli huzuia urefu wa jibu kuamua uzito wa trajektoria.

Anza kwa usakinishaji unaoweza kuhaririwa, mfano wa sasisho la CPU, na majaribio. Hizo zikishafanya kazi, hakiki kizindua cha Molt kwa kutumia --dry-run na ufuate mwongozo wa mafunzo kwa maandalizi ya GPU na data mahususi kwa modeli. Mradi unapatikana chini ya Leseni ya Apache 2.0.