THUDM / GLM

GLM (General Language Model)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

GLM 10B和ChatGLM 6B模型架构的差别

ccsquare opened this issue · comments

你好:

请问一下,关于GLM 10B模型和ChatGLM 6B模型,以及别的如llama等生成式模型, 我有一些疑惑,不知道方便解答否。

  1. 首先,GLM 10B和 ChatGLM 6B 两者在模型架构上有什么差别吗,训练时在框架侧和训练驱动代码上有哪些需要区别对待呢?
  2. GLM系列模型和llama等模型在训练数据构造方式上有差别吗?在为GLM系列模型构造样本时,有什么需要区别注意的地方吗?
  3. 如果要接着做sft, 在训练方式上(例如策略,参数设置等),GLM系列模型和llama等模型相比,有什么需要特别注意的地方吗?

感谢~

commented

其实这三个问题看代码都能得到答案,微调的时候没有特别需要注意的地方,正常炼丹就好。

@LucienShui 感谢你的回答,不过现在网上关于这两个模型的训练/预测有很多代码,不知道最原始的关于这两个模型的训练/预测的代码是哪份,能麻烦提供一下链接吗?

commented

@ccsquare 预训练对应的是:bash scripts/ds_pretrain_nvidia.sh config/ds_block_large.sh,可以根据自己的需要切换配置文件。

预测的代码可以从这里魔改:

GLM/pretrain_glm.py

Lines 207 to 222 in 4f61ed7

def forward_step(data_iterator, model, args, timers, mems):
"""Forward step."""
# Get the batch.
timers('batch generator').start()
timers('data loader').start()
rand = random.Random(args.iteration * mpu.get_data_parallel_world_size() + mpu.get_data_parallel_rank())
if data_iterator[1] and rand.random() < args.multi_task_ratio:
data = next(data_iterator[1]) if data_iterator[1] else None
data["mode"] = "multi-task"
else:
data = next(data_iterator[0]) if data_iterator[0] else None
# print_rank_0("data iterator")
timers('data loader').stop()
tokens, labels, loss_mask, attention_mask, position_ids = get_batch(data, args)
timers('batch generator').stop()

也可以尝试直接用 transformers 加载,按理说是通的,这个我暂时还没有尝试过。