Том хэлний загварыг нарийн тохируулах (Fine-tuning)-д зориулсан гарын авлага: Ойлголт, арга барил, дадлага
Том хэлний загварыг нарийн тохируулах (Fine-tuning)-д зориулсан гарын авлага: Ойлголт, арга барил, дадлага
Том хэлний загварууд (LLMs) нь байгалийн хэл боловсруулах салбарт гайхалтай амжилт гаргаж, текст үүсгэх, орчуулах, асуултад хариулах зэрэгт маш сайн гүйцэтгэл үзүүлж байна. Гэсэн хэдий ч эдгээр загваруудыг тодорхой даалгавар эсвэл салбарт илүү сайн ажиллуулахын тулд нарийн тохируулах (Fine-tuning) нь чухал технологи болсон. Энэхүү нийтлэл нь LLM-ийг нарийн тохируулах ойлголт, арга барил, бодит хэрэглээг гүнзгий судлах бөгөөд эхлэгчдэд хурдан эхлэхэд туслах болно.
Нарийн тохируулах гэж юу вэ?
Нарийн тохируулах гэдэг нь урьдчилан сургагдсан том хэлний загвар дээр тодорхой даалгаврын өгөгдлийн санг ашиглан нэмэлт сургалт хийхийг хэлнэ. Урьдчилан сургагдсан загвар нь хэлний ерөнхий мэдлэгийг аль хэдийн сурсан байдаг бол нарийн тохируулах нь тодорхой даалгаврын нарийн ширийн зүйлс, загварт дасан зохицох боломжийг олгодог. Урьдчилан сургагдсан загвар нь өргөн хүрээний мэдлэгийг агуулсан нэвтэрхий толь гэж төсөөлөөд үз дээ. Нарийн тохируулах нь загварт "анагаах ухаан"-ы тухай тусгай ном өгч, эрүүл мэндийн салбарт илүү мэргэжлийн болгохтой адил юм.
Нарийн тохируулах ба эхнээс нь сургахын ялгаа:
- Эхнээс нь сургах: Тооцооллын асар их нөөц, өгөгдөл шаарддаг бөгөөд сургалтад удаан хугацаа шаардагдана.
- Нарийн тохируулах: Бага хэмжээний өгөгдөл, тооцооллын нөөц шаардлагатай, сургалтад богино хугацаа шаардагдах бөгөөд ихэвчлэн илүү сайн үр дүнд хүрдэг.
Яагаад нарийн тохируулах шаардлагатай вэ?
- Гүйцэтгэлийг сайжруулах: Загварыг тодорхой даалгаварт илүү сайн ажиллуулах, жишээлбэл, сэтгэл хөдлөлийн дүн шинжилгээ, текст ангилах, машин орчуулга гэх мэт.
- Салбарт дасан зохицох: Загварыг тодорхой салбарын мэдлэг, хэв маягт дасан зохицох, жишээлбэл, санхүү, хууль, эрүүл мэнд гэх мэт.
- Нөөцийг хэмнэх: Эхнээс нь сургахтай харьцуулахад нарийн тохируулах нь тооцооллын нөөц, цаг хугацааны зардлыг эрс бууруулдаг.
- Хяналт: Хөгжүүлэгчдэд загварын гаралтын хэв маяг, зан үйлийг илүү сайн хянах боломжийг олгодог.
Нарийн тохируулах гол алхмууд
-
Урьдчилан сургагдсан загварыг сонгох: Даалгаварт тохирох урьдчилан сургагдсан загварыг сонгоно уу. Жишээлбэл, текст үүсгэх даалгаварт GPT цуврал загварыг, асуултад хариулах даалгаварт BERT цуврал загварыг сонгож болно. Hugging Face Model Hub (https://huggingface.co/models) нь янз бүрийн урьдчилан сургагдсан загварыг олох боломжтой сайн эх сурвалж юм.
-
Өгөгдлийн санг бэлтгэх: Өндөр чанартай, тодорхой даалгаварт зориулсан өгөгдлийн санг бэлтгэнэ үү. Өгөгдлийн сангийн хэмжээ, чанар нь нарийн тохируулах үр дүнд ихээхэн нөлөөлдөг.
- Өгөгдөл цэвэрлэх: Өгөгдөлд байгаа алдаа, дуу чимээ, зөрүүг арилгана уу.
- Өгөгдөл тэмдэглэх: Өгөгдлийг тэмдэглэнэ үү, жишээлбэл, текст ангилах нь ангиллыг тэмдэглэх, асуултад хариулах даалгавар нь хариултыг тэмдэглэх шаардлагатай.
- Өгөгдөл хуваарилах: Өгөгдлийн санг сургалтын багц, баталгаажуулалтын багц, туршилтын багц болгон хуваана уу.
-
Нарийн тохируулах параметрүүдийг тохируулах: Оновчтой болгогч, сургалтын хурд, batch size, сургалтын epochs зэрэг тохиромжтой параметрүүдийг сонгоно уу.
- Сургалтын хурд: Сургалтын хурд нь загварын параметрүүдийг шинэчлэх хурдыг хянадаг. Хэт өндөр сургалтын хурд нь загварыг тогтворгүй болгож, хэт бага сургалтын хурд нь сургалтыг удаашруулж болзошгүй. Сургалтын хурдны нийтлэг утгууд нь: 1e-3, 1e-4, 1e-5.
- Batch Size: Batch size нь итераци бүрт сургалтад ашиглах дээжийн тоог тодорхойлдог. Том batch size нь сургалтын хурдыг нэмэгдүүлж болох ч илүү их санах ой эзэлж болно.
- Epochs: Epochs нь сургалтын бүх өгөгдлийн санг загвараар хэдэн удаа дамжуулж байгааг хэлнэ. Хэт олон epochs нь хэт тохируулгад хүргэж болох ба хэт цөөн epochs нь сургалтыг хангалтгүй болгож болзошгүй.
-
Нарийн тохируулах: Бэлтгэсэн өгөгдлийн сан, тохируулсан параметрүүдийг ашиглан урьдчилан сургагдсан загвар дээр нарийн тохируулга хийнэ үү. Нийтлэг нарийн тохируулах фрэймворкуудад TensorFlow, PyTorch, Hugging Face Transformers багтана.
-
Загварыг үнэлэх: Туршилтын багцыг ашиглан нарийн тохируулсан загварын гүйцэтгэлийг үнэлж, шаардлагатай тохируулга хийнэ үү. Үнэлгээний нийтлэг үзүүлэлтүүдэд нарийвчлал, үнэн зөв, эргэн санах, F1 утга гэх мэт багтана.
Нарийн тохируулах арга барил
1. Бүрэн нарийн тохируулах (Full Fine-tuning)
Энэ нь нарийн тохируулах хамгийн шууд арга бөгөөд урьдчилан сургагдсан загварын бүх параметрыг шинэчилдэг.
- Давуу тал: Урьдчилан сургагдсан загварын мэдлэгийг бүрэн ашиглаж, тодорхой даалгаварт хамгийн сайн гүйцэтгэлд хүрч чадна.
- Сул тал: Тооцооллын асар их нөөц, санах ой шаардлагатай бөгөөд хэт тохируулахад хялбар.
2. Параметр үр ашигтай нарийн тохируулалт (Parameter-Efficient Fine-tuning, PEFT)
Том загварууд нь олон тооны параметрүүдтэй тул бүрэн нарийн тохируулах нь өндөр өртөгтэй байдаг. Параметр үр ашигтай нарийн тохируулах арга нь загварын зөвхөн багахан хэсгийг шинэчилж, тооцооллын зардал болон санах ойн хэрэгцээг бууруулдаг.
-
LoRA (Low-Rank Adaptation)
LoRA нь бага рангийн матрицыг нэвтрүүлж анхны загварын параметрийн шинэчлэлтийг ойролцоо болгодог. Үүний гол санаа нь урьдчилан сургагдсан загварын одоо байгаа жингийн матрицийн хажууд бага рангийн матрицыг нэмж, эдгээр бага рангийн матрицыг сургах замаар доод урсгалын даалгаварт тохируулах явдал юм. Ингэснээр сургах шаардлагатай параметрүүдийн тоо багасч, тооцооллын зардлыг эрс бууруулдаг.
# Hugging Face PEFT санг ашиглан LoRA нарийн тохируулалт хийх from peft import LoraConfig, get_peft_model # LoRA тохиргоог тодорхойлох lora_config = LoraConfig( r=8, # Бага рангийн матрицын ранк lora_alpha=32, # LoRA масштаблах хүчин зүйл lora_dropout=0.05, # LoRA dropout магадлал bias="none", task_type="CAUSAL_LM" # Даалгаврын төрөл ) # Урьдчилан сургагдсан загварыг ачаалах model = AutoModelForCausalLM.from_pretrained(model_name_or_path) # LoRA-г загварт хэрэглэх model = get_peft_model(model, lora_config) model.print_trainable_parameters() -
Prefix Tuning
Prefix Tuning нь оролтын дарааллын өмнө сургах боломжтой "prefix" векторыг нэмж, эдгээр prefix векторыг сургах замаар загварын үйлдлийг тохируулдаг. Энэ арга нь анхны загварын параметрыг өөрчлөх шаардлагагүй тул маш үр ашигтай.
-
Adapter Tuning
Adapter Tuning нь урьдчилан сургагдсан загварын давхарга бүрт жижиг мэдрэлийн сүлжээний модулиудыг (adapters) оруулж, эдгээр adapters-ийг сургах замаар доод урсгалын даалгаварт тохируулдаг. Бүрэн нарийн тохируулгатай харьцуулахад Adapter Tuning нь зөвхөн цөөн тооны параметрыг сургах шаардлагатай бөгөөд нэгэн зэрэг сайн гүйцэтгэлийг хадгалж чаддаг.
3. Prompt Tuning
Prompt Tuning нь илүү хөнгөн жинтэй нарийн тохируулах арга бөгөөд оролтын сануулгыг (prompt) оновчтой болгох замаар урьдчилан сургагдсан загварыг хүссэн гаралт үүсгэхэд чиглүүлдэг. Энэ арга нь загварын ямар ч параметрыг өөрчлөх шаардлагагүй тул маш үр ашигтай.
- Hard Prompt Tuning: Гараар сануулга зохиох.
- Soft Prompt Tuning: Сургах боломжтой векторыг сануулга болгон ашиглаж, эдгээр векторыг сургах замаар сануулгыг оновчтой болгох.
# Сургах боломжтой сануулга (Soft Prompt) ашиглах
from peft import PromptTuningConfig, get_peft_model, PromptTuningInit, TaskType
# Prompt Tuning тохиргоог тодорхойлох
prompt_tuning_config = PromptTuningConfig(
task_type=TaskType.CAUSAL_LM,
prompt_tuning_init=PromptTuningInit.TEXT,
num_virtual_tokens=20, # Сануулгын урт
prompt_tuning_init_text="Дараах асуултанд хариулна уу:", # Анхны сануулга
tokenizer_name_or_path=model_name_or_path,
)
```# Урьдчилан сургагдсан загварыг ачаалах
model = AutoModelForCausalLM.from_pretrained(model_name_or_path)
# Prompt Tuning-ийг загварт хэрэглэх
model = get_peft_model(model, prompt_tuning_config)
model.print_trainable_parameters()
Хэрэгтэй зөвлөмжүүд
- Өгөгдөл нэмэгдүүлэх: Сургалтын өгөгдөлд санамсаргүй өөрчлөлтүүдийг хийж, жишээ нь ижил утгатай үгсийг орлуулах, өгүүлбэрийг дахин байрлуулах зэргээр өгөгдлийн олон янз байдлыг нэмэгдүүлж, хэт тохирох байдлаас сэргийлнэ.
- Эрт зогсоох арга (Early Stopping): Сургалтын явцад баталгаажуулалтын багц дээрх гүйцэтгэлийг хянаж, гүйцэтгэл сайжрахаа больсон үед сургалтыг эрт зогсоож, хэт тохирох байдлаас сэргийлнэ.
- Суралцах хурдыг бууруулах (Learning Rate Decay): Сургалтын явцад суралцах хурдыг аажмаар бууруулснаар загварыг оновчтой шийдэлд илүү тогтвортойгоор хүргэж болно.
- Тогтворжуулалт (Regularization): L1 эсвэл L2 тогтворжуулалтыг ашиглан загварын параметрүүдийг хязгаарлаж, хэт тохирох байдлаас сэргийлнэ.
- Урьдчилан сургагдсан Embedding ашиглах: Жишээлбэл GloVe эсвэл Word2Vec нь загварын ерөнхий чадварыг сайжруулж чадна.
Хэрэгслүүдийн зөвлөмж
- Hugging Face Transformers: LLM хөгжүүлэгчдийн хувьд баялаг урьдчилан сургагдсан загвар болон нарийн тохируулах хэрэгслүүдийг санал болгодог.
- PEFT (Parameter-Efficient Fine-Tuning): Параметр хэмнэлттэй нарийн тохируулах аргуудад зориулагдсан Hugging Face-ийн сан.
- TensorBoard: Сургалтын явцыг дүрслэх хэрэгсэл бөгөөд загварын гүйцэтгэлийг хянах, параметрүүдийг засахад тусалдаг.
- Weights & Biases: Машины сургалтын туршилтуудыг хянах, дүрслэх платформ.
Бодит хэрэглээ
- Сэтгэл хөдлөлийн дүн шинжилгээ: LLM-ийг нарийн тохируулах нь сэтгэл хөдлөлийн дүн шинжилгээний нарийвчлалыг сайжруулж чадна, жишээлбэл киноны тойм дахь сэтгэл хөдлөлийг эерэг эсвэл сөрөг гэж тодорхойлох.
- Текст ангилал: LLM-ийг нарийн тохируулах нь текстийг ангилах ажилд ашиглагдаж болно, жишээлбэл мэдээллийн нийтлэлийг өөр өөр сэдэвчилсэн ангилалд ангилах.
- Машин орчуулга: LLM-ийг нарийн тохируулах нь машины орчуулгын чанарыг сайжруулж чадна, жишээлбэл англи хэлийг хятад хэл рүү орчуулах.
- Асуулт хариултын систем: LLM-ийг нарийн тохируулах нь асуулт хариултын системийг бий болгоход ашиглагдаж болно, жишээлбэл хэрэглэгчийн асуултанд хариулах.
- Код үүсгэх: Нарийн тохируулсан LLM-ийг код хэсгийг үүсгэх эсвэл кодыг дуусгахад ашиглаж болно. Жишээлбэл GitHub Copilot бол амжилттай хэрэглээний жишээ юм.
Анхаарах зүйлс
- Хэт тохирох: Нарийн тохируулах явцад хэт тохирох үзэгдэл ажиглагдах магадлалтай тул өгөгдөл нэмэгдүүлэх, эрт зогсоох арга, тогтворжуулалт гэх мэт зохих арга хэмжээ авах шаардлагатай.
- Гамшигт марталт (Catastrophic Forgetting): Нарийн тохируулах нь загварыг урьдчилан сургалтын үе шатанд олж авсан мэдлэгээ мартахад хүргэж болзошгүй тул нарийн тохируулах стратегийг болгоомжтой сонгох хэрэгтэй.
- Өгөгдлийн хазайлт (Data Bias): Хэрэв нарийн тохируулах өгөгдлийн багц хазайлттай бол загвар нь тодорхой бүлгүүдэд муу ажиллахад хүргэж болзошгүй.
- Аюулгүй байдлын асуудал: Нарийн тохируулсан загвар нь хортой эсвэл зохисгүй агуулга үүсгэж болзошгүй тул аюулгүй байдлын үнэлгээ хийж, шүүлтүүр хийх шаардлагатай.





