Formatimi për akordimin e udhëzimeve
Modelet e akorduara me instruksione (IT) trajnohen me një formatues specifik që shënon të gjithë shembujt e akordimit të udhëzimeve me informacion shtesë, si në kohën e trajnimit ashtu edhe në kohën e përfundimit. Formatuesi ka dy qëllime:
- Tregimi i roleve në një bisedë, të tilla si rolet e sistemit , përdoruesit ose asistentit .
- Përcaktimi i kthesave në një bisedë, veçanërisht në një bisedë me shumë kthesa.
Më poshtë, ne specifikojmë shenjat e kontrollit të përdorur nga Gemma dhe rastet e përdorimit të tyre. Vini re se shenjat e kontrollit janë të rezervuara dhe specifike për tokenizuesin tonë.
- Token për të treguar një kthesë të përdoruesit:
user
- Token për të treguar një kthesë të modelit:
model
- Token për të treguar fillimin e kthesës së dialogut:
<start_of_turn>
- Token për të treguar fundin e kthesës së dialogut:
<end_of_turn>
Këtu është një shembull i dialogut:
<start_of_turn>user
knock knock<end_of_turn>
<start_of_turn>model
who is there<end_of_turn>
<start_of_turn>user
Gemma<end_of_turn>
<start_of_turn>model
Gemma who?<end_of_turn>
Shenja "<end_of_turn>\n"
është ndarësi i kthesave dhe prefiksi i kërkesës është "<start_of_turn>model\n"
. Kjo do të thotë që nëse dëshironi t'i bëni modelit një pyetje si, "Çfarë është Rregulli i Cramer?", në vend të kësaj duhet ta ushqeni modelin si më poshtë:
"<start_of_turn>user
What is Cramer's Rule?<end_of_turn>
<start_of_turn>model"
Vini re se nëse doni të rregulloni modelet e paratrajnuara Gemma me të dhënat tuaja, mund të përdorni çdo skemë të tillë për shenjat e kontrollit, për sa kohë që është në përputhje midis rasteve të përdorimit të trajnimit dhe përfundimit.
Udhëzimet e sistemit
Si për rregullimin e mbikëqyrur (SFT) ashtu edhe për të mësuarit përforcues nga reagimet njerëzore (RLHF), modelet nuk u trajnuan me udhëzimet e sistemit. Si rezultat, të vetmet argumente përkatëse të formatimit për Gemma janë <start_of_turn>
, <end_of_turn>
, user
, dhe model
. Për shembull:
<start_of_turn>user
What is Cramer's Rule?<end_of_turn>
<start_of_turn>model
Cramer's Rule is ...<end_of_turn>
Formatimi për detyrat FIM
Variantet CodeGemma 2B dhe 7B janë akorduar posaçërisht për detyrat e plotësimit të kodit.
Në mënyrë të veçantë, ata janë trajnuar për katër shenja kontrolli të formatimit që mund t'i përdorni për të ndihmuar në ndërtimin e kërkesave të modelit për detyrat e kodimit plotësues në mes (FIM).
Konteksti | Token |
---|---|
Prefiksi FIM | <|fim_prefix|> |
Prapashtesa FIM | <|fim_suffix|> |
FIM mes | <|fim_middle|> |
Ndarës i skedarëve | <|file_separator|> |
Përdorni shenjat FIM për të përcaktuar vendndodhjen e kursorit dhe kontekstin përreth tij që CodeGemma të kryejë plotësimin e kodit. Përdorni shenjën ndarëse të skedarëve për kontekste me shumë skedarë.
Shembull - Ndërtoni një kërkesë FIM
Ky seksion ripërdor shembullin në fillimin e shpejtë të Keras CodeGemma për t'ju treguar se si të ndërtoni një kërkesë për detyrat FIM.
Merrni parasysh kodin e mëposhtëm:
import |⏎ # Line 1
if __name__ == '__main__':⏎ # Line 2
sys.exit(0) # Line 3
|
tregon vendndodhjen e kursorit ku duhet të plotësohet kodi. Vini re se ka një hapësirë përpara kursorit dhe se linjat 1 dhe 2 kanë kthime në fund.
Pra, parashtesa është,
import
me një hapësirë në fund.
Prapashtesa është:
⏎
if __name__ == '__main__':⏎
sys.exit(0)
me një linjë të re në fillim.
Prompti duhet të ndërtohet si:
<|fim_prefix|>import <|fim_suffix|>⏎
if __name == '__main__':⏎
sys.exit(0)<|fim_middle|>
Vini re se:
- Nuk duhet të ketë hapësira shtesë të bardha midis asnjë shenjë FIM dhe parashtesës dhe prapashtesës
- Shenja e mesme FIM duhet të jetë në fund për të përgatitur modelin për të vazhduar plotësimin
- Parashtesa ose prapashtesa mund të jetë bosh në varësi të vendit ku ndodhet kursori aktualisht në skedar, ose sa kontekst dëshironi t'i jepni modelit
Kuptimi i prodhimit të modelit
Përgjigja e modelit për shembullin e mësipërm do të ishte:
<|fim_prefix|>import <|fim_suffix|>⏎
if __name__ == "__main__":\n sys.exit(0)<|fim_middle|>sys\n<|file_separator|>
Modeli përsërit kërkesën e hyrjes dhe siguron sys
si plotësimin e kodit.
Kur përdorni modelet CodeGemma për detyrat FIM, transmetoni argumentet e përgjigjes dhe përdorni argumentet FIM ose ndarës të skedarëve si ndarës për të ndaluar transmetimin dhe për të marrë përfundimin e kodit që rezulton.