Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
CSDN 技术社区
ai
chatCSDN
提交
99595b68
C
chatCSDN
项目概览
CSDN 技术社区
/
ai
/
chatCSDN
通知
107
Star
8
Fork
2
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
chatCSDN
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
99595b68
编写于
3月 23, 2023
作者:
CSDN-Ada助手
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修改sft
上级
be4440da
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
14 addition
and
6 deletion
+14
-6
README.md
README.md
+2
-2
src/dataset.py
src/dataset.py
+12
-4
未找到文件。
README.md
浏览文件 @
99595b68
...
...
@@ -49,9 +49,9 @@ python train.py --load_model "rwkv-80.pth" --wandb "" --proj_dir "out" \
使用指令数据集进行监督训练,精调语言模型,指令数据集格式为句子对。这部分数据需要由开发人员来进行编写,有的语料需要涉及到推理过程。
```
python train_sft.py --load_model "rwkv-
19
0.pth" --wandb "" --proj_dir "out_sft" \
python train_sft.py --load_model "rwkv-
50
0.pth" --wandb "" --proj_dir "out_sft" \
--data_file "data/prompts.csv" --data_type "utf-8" --vocab_size 50277 \
--ctx_len 2048 --epoch_steps 200 --epoch_count 1000 --epoch_begin 0 --epoch_save
2
\
--ctx_len 2048 --epoch_steps 200 --epoch_count 1000 --epoch_begin 0 --epoch_save
5
\
--micro_bsz 8 --n_layer 24 --n_embd 2048 --pre_ffn 0 --head_qk 0 \
--lr_init 1e-5 --lr_final 1e-5 --warmup_steps 0 --beta1 0.9 --beta2 0.999 --adam_eps 1e-8 \
--accelerator gpu --devices 1 --precision bf16 --strategy deepspeed_stage_2_offload --grad_cp 1 \
...
...
src/dataset.py
浏览文件 @
99595b68
...
...
@@ -233,12 +233,17 @@ class S2SDataset(Dataset):
]
# [vocab, vocab] for Pile model
self
.
tokenizer
=
TOKENIZER
(
WORD_NAME
)
self
.
prompt_q
=
self
.
tokenizer
.
tokenizer
.
encode
(
"Q:"
)
self
.
prompt_a
=
self
.
tokenizer
.
tokenizer
.
encode
(
"A:"
)
self
.
prompt_sep
=
self
.
tokenizer
.
tokenizer
.
encode
(
"
\n\n
"
)
pf
=
pd
.
read_csv
(
args
.
data_file
)
data_list
=
[]
for
index
,
row
in
pf
.
iterrows
():
question
=
row
[
"question"
]
answer
=
row
[
"answer"
]
data_list
.
append
((
self
.
tokenizer
.
tokenizer
.
encode
(
question
),
self
.
tokenizer
.
tokenizer
.
encode
(
"
\n
"
),
data_list
.
append
((
self
.
tokenizer
.
tokenizer
.
encode
(
question
),
self
.
tokenizer
.
tokenizer
.
encode
(
answer
)))
self
.
data
=
data_list
...
...
@@ -248,15 +253,18 @@ class S2SDataset(Dataset):
def
__getitem__
(
self
,
index
):
ctx_len
=
self
.
args
.
ctx_len
req_len
=
ctx_len
+
1
question
,
sep
,
answer
=
self
.
data
[
index
]
text
=
question
+
sep
+
answer
question
,
answer
=
self
.
data
[
index
]
question
=
self
.
prompt_q
+
question
answer
=
self
.
prompt_a
+
answer
text
=
question
+
self
.
prompt_sep
+
answer
text
=
text
[:
req_len
]
text
=
text
+
[
0
]
*
(
req_len
-
len
(
text
))
x
=
torch
.
tensor
(
text
[:
-
1
],
dtype
=
torch
.
long
)
y
=
torch
.
tensor
(
text
[
1
:],
dtype
=
torch
.
long
)
z
=
[
0
]
*
len
(
question
)
+
[
1
]
*
(
ctx_len
-
len
(
question
))
q_len
=
len
(
question
)
+
len
(
self
.
prompt_a
)
+
len
(
self
.
prompt_sep
)
z
=
[
0
]
*
q_len
+
[
1
]
*
(
ctx_len
-
q_len
)
z
=
torch
.
tensor
(
z
,
dtype
=
torch
.
long
)
return
x
,
y
,
z
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录