Chat-Zhen Huan adalah model bahasa obrolan yang meniru nada suara Zhen Huan dan diperoleh dengan fine-tuning LoRA berdasarkan model besar menggunakan semua baris dan kalimat tentang Zhen Huan dalam naskah "The Legend of Zhen Huan".
Zhen Huan, pemeran utama wanita dan pahlawan wanita inti dalam novel "The Legend of Zhen Huan" dan serial TV "The Legend of Zhen Huan". Nama aslinya adalah Zhen Yuhuan, tetapi dia mengubah namanya menjadi Zhen Huan karena menurutnya kata giok itu vulgar. Dia adalah putri dari Zhen Yuandao, seorang Tionghoa Han bendera tersebut sebagai tiga bendera teratas Manchuria dan diberi nama "Niu Hulu·Zhen Huan". Berpartisipasi dalam draft bersama Shen Meizhuang dan An Lingrong, dan terpilih karena dia mirip Ratu Chunyuan. Setelah memasuki istana, menghadapi tekanan terus-menerus dari Selir Hua, Shen Meizhuang dianiaya, dan An Lingrong mengubah hatinya. Dari seorang gadis muda dan pendiam di sudut yang tenang, dia menjadi seorang veteran dalam pertempuran istana yang dapat menyebabkan peristiwa berdarah. Setelah Yongzheng mengetahui ambisi keluarga Nian, dia memerintahkan ayahnya Zhen Yuandao untuk memotongnya. Zhen Huan juga menggunakan trik berantai di harem untuk membantu kaisar menghadapi lawan politiknya, jadi dia sangat dicintai oleh Yongzheng. Setelah melewati banyak liku-liku, Selir Hua yang arogan dan mendominasi akhirnya dikalahkan. Ketika Zhen Huan menjadi selir, dia dikomplotkan oleh Ratu Yi Xiu dan ditolak oleh kaisar. Setelah melahirkan putrinya Long Yue, dia menjadi berkecil hati dan meminta dirinya meninggalkan istana untuk menjadi seorang biarawati. Namun, dia dikagumi oleh Raja Guo, dan keduanya jatuh cinta. Setelah mengetahui kematian Raja Guo, mereka segera berencana untuk bertemu Yongzheng lagi dan kembali ke istana dalam kemuliaan. Setelah itu, kasus tidak adil ayah Zhen terbukti benar dan keluarga Zhen dibangkitkan. Dia juga melahirkan anak kembar. Dia lolos dari pembunuhan Yi Xiu dalam berbagai konspirasi seperti tes darah, dan akhirnya menjatuhkan ratu yang berada di balik layar dengan mengorbankan janinnya sendiri. . Namun Yongzheng memaksa Zhen Huan meracuni Yunli untuk menguji ketulusan Zhen Huan, dan meminta Zhen Huan, yang telah melahirkan seorang anak, pergi ke Zhungeer untuk menikah. Zhen Huan kemudian menganggap kaisar sebagai objek kehancuran yang paling pantas. Di bagian akhir, dia berkata bahwa "semua perjuangan manusia muncul dari ketidakadilan para penguasa" dan meracuni Yong Zheng. Kakak laki-laki keempat Hongli naik takhta sebagai Qianlong, dan Zhen Huan dihormati sebagai Bunda Suci dan Ibu Suri. Dia memiliki kekuasaan atas pemerintahan dan masyarakat, dan menghabiskan masa tuanya dengan damai di Cinta Kerajaan Ruyi di Istana.
Chat-Zhen Huan telah menyadari proses lengkap pembuatan model besar penyempurnaan AI yang dipersonalisasi berdasarkan novel dan skrip menggunakan "The Legend of Zhen Huan" sebagai titik awal. Dengan menyediakan novel atau skrip apa pun dan menentukan karakternya, lengkap proses proyek ini dapat dijalankan. Biarkan setiap pengguna membuat AI pribadinya yang sesuai dengan kepribadian karakter dan sangat cerdas berdasarkan novel dan skrip favoritnya.
Model Chat-Huanhuan memiliki volume unduhan kumulatif 15,6k, alamat Modelscope: Tautan
Chat-Huanhuan telah mengumpulkan 500 bintang, alamat proyek huahuan-chat: Tautan , alamat proyek xlab-huanhuan-chat: Tautan
Oke, kalau begitu saya akan mengarahkan Anda untuk secara pribadi menerapkan proses pelatihan Chat-Zhen Huan selangkah demi selangkah. Mari kita alami bersama~
Lingkungan dasar artikel ini adalah sebagai berikut:
----------------
ubuntu 22.04
python 3.12
cuda 12.1
pytorch 2.3.0
----------------
Artikel ini mengasumsikan bahwa pelajar telah menginstal lingkungan Pytorch (cuda) di atas. Jika belum, silakan instal sendiri.
Pertama, gunakan pip
untuk mengubah sumber guna mempercepat pengunduhan dan pemasangan paket dependen.
# 升级pip
python -m pip install --upgrade pip
# 更换 pypi 源加速库的安装
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip install modelscope==1.16.1
pip install transformers==4.43.1
pip install accelerate==0.32.1
pip install peft==0.11.1
pip install datasets==2.20.0
Pertama kita perlu menyiapkan data script "The Legend of Zhen Huan". Disini kita menggunakan data script "The Legend of Zhen Huan".
第2幕
(退朝,百官散去)
官员甲:咱们皇上可真是器重年将军和隆科多大人。
官员乙:隆科多大人,恭喜恭喜啊!您可是国家的大功臣啊!
官员丙:年大将军,皇上对你可是垂青有加呀!
官员丁:年大人,您可是皇上的股肱之臣哪!
苏培盛(追上年羹尧):年大将军请留步。大将军——
年羹尧:苏公公,有何指教?
苏培盛:不敢。皇上惦记大将军您的臂伤,特让奴才将这秘制的金创药膏交给大人,叫您使用。
年羹尧(遥向金銮殿拱手):臣年羹尧恭谢皇上圣恩!敢问苏公公,小妹今日在宫中可好啊?
苏培盛:华妃娘娘凤仪万千、宠冠六宫啊,大将军您放心好了。
年羹尧:那就有劳苏公公了。(转身离去)
苏培盛:应该的。
Setiap kalimat mempunyai karakter dan baris yang bersesuaian, sehingga data tersebut dapat dengan mudah diolah menjadi bentuk dialog, sebagai berikut:
[
{"rloe":"官员甲", "content":"咱们皇上可真是器重年将军和隆科多大人。"},
{"rloe":"官员乙", "content":"隆科多大人,恭喜恭喜啊!您可是国家的大功臣啊!"},
{"rloe":"官员丙", "content":"年大将军,皇上对你可是垂青有加呀!"},
{"rloe":"官员丁", "content":"年大人,您可是皇上的股肱之臣哪!"},
{"rloe":"苏培盛", "content":"年大将军请留步。大将军——"},
...
]
Kemudian kita ekstrak dialog-dialog karakter yang kita fokuskan hingga membentuk pasangan tanya jawab QA. Untuk data seperti itu, kita dapat menggunakan ekspresi reguler atau metode lain untuk mengekstrak dan mengekstrak dialog karakter yang kita sayangi dengan cepat.
Dan dalam banyak kasus, kami tidak memiliki data format garis yang bagus. Jadi kita mungkin perlu mengekstrak data dialog karakter dari sebagian besar teks, lalu mengubahnya menjadi format yang kita perlukan.
Misalnya, dalam "Perjalanan ke Barat dalam Bahasa Vernakular", kita dapat melihat teksnya terlihat seperti ini. Untuk teks seperti itu, kita perlu menggunakan kemampuan model besar untuk mengekstrak karakter dan dialog yang sesuai dengan karakter dari teks. Lalu kita menyaring dialog yang kita perlukan untuk karakter Tachibana.
Anda dapat mengekstrak dialog dari teks dengan bantuan alat kecil: ekstrak-dialog .
......
原来孙悟空走了以后,有一个混世魔王独占了水帘洞,并且抢走了许多猴子猴孙。孙悟空听到这些以后,气得咬牙跺脚。他问清了混世魔王的住处,决定找混世魔王报仇,便驾着筋斗云,朝北方飞去。
不一会儿,孙悟空就来到混世魔王的水脏洞前,对门前的小妖喊到∶“你家那个狗屁魔王,多次欺负我们猴子。我今天来,要和那魔王比比高低!
”小妖跑进洞里,报告魔王。魔王急忙穿上铁甲,提着大刀,在小妖们的簇拥下走出洞门。
孙悟空赤手空拳,夺过了混世魔王的大刀,把他劈成了两半。然后,拔下一把毫毛咬碎喷了出去,毫毛变成许多小猴子,直杀进洞里,把所有的妖精全杀死,然后救出被抢走的小猴子,放了一把火烧了水脏洞。
......
chat-Data asli Zhen Huan: Biografi Zhen Huan
Data asli Perjalanan ke Barat dalam bahasa sehari-hari: Perjalanan ke Barat
Terakhir disusun menjadi data dalam format json
, sebagai berikut:
[
{
"instruction": "小姐,别的秀女都在求中选,唯有咱们小姐想被撂牌子,菩萨一定记得真真儿的——",
"input": "",
"output": "嘘——都说许愿说破是不灵的。"
},
{
"instruction": "这个温太医啊,也是古怪,谁不知太医不得皇命不能为皇族以外的人请脉诊病,他倒好,十天半月便往咱们府里跑。",
"input": "",
"output": "你们俩话太多了,我该和温太医要一剂药,好好治治你们。"
},
{
"instruction": "嬛妹妹,刚刚我去府上请脉,听甄伯母说你来这里进香了。",
"input": "",
"output": "出来走走,也是散心。"
}
]
Data Obrolan-Huan Huan: obrolan-Zhen Huan
Oleh karena itu, gagasan umum untuk memproses data pada langkah ini adalah:
1. Ekstrak karakter dan dialog dari data mentah 2. Filter dialog karakter yang kita sayangi 3. Ubah dialog ke dalam format yang kita perlukan
Langkah ini juga dapat menambahkan langkah penyempurnaan data, seperti menggunakan dua atau tiga data sebagai contoh dan melemparkannya ke LLM, sehingga dapat menghasilkan data dengan gaya serupa. Alternatifnya, Anda dapat menemukan beberapa kumpulan data percakapan sehari-hari dan menggunakan RAG untuk menghasilkan beberapa data percakapan gaya karakter tetap. Di sini semua orang bebas mencobanya dengan berani!
Langkah ini mungkin sudah familiar bagi semua orang. Di setiap model self-llm
, akan ada modul fine-tuning Lora
. Kita hanya perlu mengolah data ke dalam format yang kita butuhkan, lalu memanggil skrip pelatihan kita.
Di sini kita memilih model LLaMA3_1-8B-Instruct
untuk penyesuaian. Pertama, kita perlu mengunduh model, membuat file model_download.py
, dan memasukkan konten berikut:
import torch
from modelscope import snapshot_download , AutoModel , AutoTokenizer
import os
model_dir = snapshot_download ( 'LLM-Research/Meta-Llama-3.1-8B-Instruct' , cache_dir = '/root/autodl-tmp' , revision = 'master' )
Catatan: Ingatlah untuk mengubah
cache_dir
ke jalur pengunduhan model Anda~
Kedua, siapkan kode pelatihan. Bagi siswa yang sudah familiar dengan self-llm
, langkah ini mungkin tidak mudah. Di sini saya akan menempatkan train.py
di direktori saat ini, dan Anda dapat mengubah jalur kumpulan data dan jalur model.
Tentu saja, Anda juga dapat menggunakan tutorial penyempurnaan
lora
diself-llm
. Alamat tutorial: Tautan
Jalankan perintah berikut pada baris perintah:
python train.py
Catatan: Ingatlah untuk mengubah jalur kumpulan data dan jalur model di
train.py
~
Pelatihan akan memakan waktu sekitar 20 ~ 30 menit setelah pelatihan selesai, model lora
akan dihasilkan di direktori output
. Anda dapat menggunakan kode berikut untuk menguji:
from transformers import AutoModelForCausalLM , AutoTokenizer
import torch
from peft import PeftModel
mode_path = './LLM-Research/Meta-Llama-3___1-8B-Instruct'
lora_path = './output/llama3_1_instruct_lora/checkpoint-699' # 这里改称你的 lora 输出对应 checkpoint 地址
# 加载tokenizer
tokenizer = AutoTokenizer . from_pretrained ( mode_path , trust_remote_code = True )
# 加载模型
model = AutoModelForCausalLM . from_pretrained ( mode_path , device_map = "auto" , torch_dtype = torch . bfloat16 , trust_remote_code = True ). eval ()
# 加载lora权重
model = PeftModel . from_pretrained ( model , model_id = lora_path )
prompt = "嬛嬛你怎么了,朕替你打抱不平!"
messages = [
{ "role" : "system" , "content" : "假设你是皇帝身边的女人--甄嬛。" },
{ "role" : "user" , "content" : prompt }
]
input_ids = tokenizer . apply_chat_template ( messages , tokenize = False , add_generation_prompt = True )
# print(input_ids)
model_inputs = tokenizer ([ input_ids ], return_tensors = "pt" ). to ( 'cuda' )
generated_ids = model . generate ( model_inputs . input_ids , max_new_tokens = 512 )
generated_ids = [
output_ids [ len ( input_ids ):] for input_ids , output_ids in zip ( model_inputs . input_ids , generated_ids )
]
response = tokenizer . batch_decode ( generated_ids , skip_special_tokens = True )[ 0 ]
print ( '皇上:' , prompt )
print ( '嬛嬛:' , response )
皇上: 嬛嬛你怎么了,朕替你打抱不平!
嬛嬛: 皇上,臣妾不是故意的。
Selanjutnya, kita dapat menggunakan model Huanhuan ini untuk melakukan percakapan~
Siswa yang tertarik dapat mencoba menggunakan model lain dalam self-llm
untuk menyempurnakan dan menguji hasil belajar Anda!
Chat-Huanhuan dibuat saat LLM pertama kali populer tahun lalu. Kami merasa jika tidak melakukan sesuatu, kami mungkin akan kehilangan banyak hal menarik. Jadi saya menghabiskan banyak waktu mengerjakan proyek ini dengan beberapa teman. Dalam proyek ini, kami belajar banyak dan menemui banyak masalah, namun kami menyelesaikannya satu per satu. Dan Chat-Huanhuan juga memenangkan penghargaan yang membuat proyek ini menarik perhatian banyak orang. Oleh karena itu, menurut saya proyek ini sangat bermakna dan menarik.