Formatimi Gemma dhe udhëzimet e sistemit

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:

  1. Tregimi i roleve në një bisedë, të tilla si rolet e sistemit , përdoruesit ose asistentit .
  2. 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.