RainPanda
(Zhang Xinran)
1
根据群友的意见,“epoch_steps = 语料条目/micro_bsz”,我micro_bsz选4的话,epoch_steps就变成恐怖的468625……
训练参数如下图,求各位大佬的建议。我的显卡是4090,24gb显存,64g内存。cpu是i9。这么多语料,该怎么训练,求大佬指教!
以下是训练参数:
load_model='/mnt/f/AI_software/RWKV-Runner/models/RWKV-x060-World-7B-v3-20241112-ctx4096.pth'
proj_dir='/mnt/f/output_lora'
data_file='/mnt/f/json2binidx_tool-main/data/0.merged_output_text_document'
n_layer=32
n_embd=4096
micro_bsz=4
epoch_save=5
epoch_steps=468625
ctx_len=1024
lora_config='{"lora_load":"","lora_r":64,"lora_alpha":128,"lora_dropout":0.01}'
python train.py --load_model $load_model \
--proj_dir $proj_dir --data_file$data_file \
--vocab_size 65536 \
--n_layer $n_layer --n_embd$n_embd \
--data_type binidx --dataload pad --loss_mask pad \
--ctx_len $ctx_len --micro_bsz$micro_bsz \
--epoch_steps $epoch_steps --epoch_count 5 --epoch_begin 0 --epoch_save$epoch_save \
--lr_init 5e-5 --lr_final 5e-5 --warmup_steps 0 --beta1 0.9 --beta2 0.99 --adam_eps 1e-8 \
--accelerator gpu --devices 1 --precision bf16 --strategy deepspeed_stage_1 --grad_cp 1 \
--my_testing "x060" \
--peft lora --lora_config $lora_config
JL717
(J.L)
2
这样是完整过一轮你的数据,当然你可以不完整过一轮,你把steps调整为1000或者10000。–epoch_count 设置你要的轮数,然后测试不同轮数的效果,选择最符合的要求的一轮即可
3 Likes
RainPanda
(Zhang Xinran)
3
【问题补充】
语料是我收集的总共3500多本言情小说,切成如下续写的格式:
{“text”: “User: 1024字节以内的段落开头\n\nAssistant: 3×1024个字节的后续文本”}
我希望炼成后能更擅长写言情一些,其中还包括NSFW的内容,我希望模型写这类内容的时候,能更偏向女性视角……lora以外,还有更推荐的微调模式吗?
1 Like
RainPanda
(Zhang Xinran)
4
谢谢大佬!求问一下,steps和epoch_count分别影响什么?设置成1000,意思是,只阅读一千条语句吗?
JL717
(J.L)
5
steps 就是你这一轮训练多少数据(乘上你的bsz),epoch_count就是训练轮数。假设你一轮训练所有数据你设置epoch_count=3 就是重复训练3遍
1 Like
RainPanda
(Zhang Xinran)
7
谢谢大佬,我这个格式 → {“text”: “User: 1024字节以内的段落开头\n\nAssistant: 3×1024个字节的后续文本”} → 对应的ctx_len不是1024,而是1024*3!也就是ctx_len=4096,对吧!好的,我改一下,根据您的推荐,用bone试试看!
RainPanda
(Zhang Xinran)
9
不是,我切的时候按照字节切的,所以精确是:前文1024+后文1024*3个字节。等等……嘶……ctx_len的单位应该是字节数,不是汉字数吧?
RWKV-7
(RWKV-7)
10
是token数,对于RWKV,每个汉字是一个token。
1 Like
RainPanda
(Zhang Xinran)
11
这是Bone的训练教程里的内容:

上面写着Pissa建议,而不是Bone。呃……Pissa和Bone在这个参数上是一样的吗?
1 Like
RainPanda
(Zhang Xinran)
13
啊?真的吗?ctx_len是tooken???按照汉字来算!?(说明,我可以塞更多文字了?╰(°▽°)╯)
1 Like
RWKV-7
(RWKV-7)
14
当然!按照汉字来算,RWKV分词器基本上是一个汉字一个token。
但这里不建议微调不合适的内容或者让模型产生不良文学
1 Like
Seikaijyu
(Seikaijyu)
15
其实也多不了几个字,而且每条数据还要少一个token,因为结尾会自动在tokenize的时候加入\0
1 Like
RainPanda
(Zhang Xinran)
16
多很多了,因为我以前以为这个东西装的是字节。现在改成以汉字为单位了,我的4090小水管终于跑起来了!!!