何枝
何枝
尝试删掉之前下载的GLM缓存,并重新下载。 检查一下:`~/.cache/huggingface/modules/transformers_modules` 是否存在 `THUDM` 文件夹。 如果有,则删掉它并重新运行程序,即可重新下载。
看错误截图是模型存储的时候路径已经存在导致的。 我不知道您为什么会出现这样的问题,但您可以尝试把 290 行和 291 行给注释掉: ```python # if not os.path.exists(cur_save_dir): # os.makedirs(cur_save_dir) ``` 并删除 `checkpoints_parrallel/` 目录,重新开启训练。
LoRA 将 transformer 中的 Attention Matrix 分解为两个低秩(Low Rank)向量,从而起到减少 GPU 显存占用的作用。 代码中的 `--lora_rank` 参数用于设定被分解的向量的矩阵秩为多少,你可以在 [源码](https://github.com/huggingface/peft/blob/1d01a70d92836c56f7b6d4d917f1e6bdc1855dfd/src/peft/tuners/lora.py#L58) 里看到对应的解释,也可以在 [论文](https://arxiv.org/pdf/2106.09685.pdf) 里找到更具体的细节。 这意味着,您可以通过修改这个参数来调整训练时所消耗的资源(但这可能会对最终的结果产生一定的影响)。
Hi,这是因为 ChatGLM 官方更新了模型,您可以 pull 一下最新的代码来解决该问题。 具体来讲: 1. [这里](https://github.com/HarderThenHarder/transformers_tasks/blob/c02dd1fdaf981bc861753814ec42ef06f078567a/LLM/finetune/train.py#L187) 修改为 AutoModel 来加载模型。 2. [这里](https://github.com/HarderThenHarder/transformers_tasks/blob/c02dd1fdaf981bc861753814ec42ef06f078567a/LLM/finetune/train.py#L250) 不再需要传入 `attention_mask` 和 `position_ids`。 3. [构建数据时](https://github.com/HarderThenHarder/transformers_tasks/blob/c02dd1fdaf981bc861753814ec42ef06f078567a/LLM/finetune/utils.py#L57) 同样也不需要再构建 `attention_mask` 和 `position_ids`。 所以,您也可以尝试直接替换 `train.py` 和 `utils.py` 这两个文件即可。
看起来像是用了之前文件的缓存,尝试一下删除之前的缓存: `rm -r ~/.cache/huggingface/modules/transformers_modules/THUDM/` 再重新跑下代码试试 :) 对了,如果用新代码训练出来的模型,在 `inference.py` 中也需要对应的修改为 `AutoModel` 加载,如果您删除缓存后还是无法正常运行大概率是因为这里的问题,这部分我还没有修改,我会尽快抽时间修改完后上传。
Hi,如果您需要扩展 special token 可以尝试下使用下面这种方式: ```python special_tokens = ['(', ')'] tokenizer.add_tokens(special_tokens, special_tokens=True) model.resize_token_embeddings(len(tokenizer)) ```
Hi,正常来讲当前 playground 应该只会加载一次模型,只有在刷新页面的时候才会重新加载模型。 我在 [这里](https://github.com/HarderThenHarder/transformers_tasks/blob/c56bcc4a19d960cb9481ff13d796fad3c303d749/LLM/finetune/playground_local.py#L82) 进行了模型的缓存,只有当刷新页面(清除缓存)后才会重新加载。 生成速度慢可能有两个原因: 1. 要求模型生成的文本过长,这将会延长模型推理时间。 2. 使用 LoRA 加载,而非原始模型加载,这也可能会小部分影响推理时延。您可以使用最新的代码训练模型,模型在保存时将会保存为原始模型的结构(而非 LoRA Adaptor)。
Hi,看起来像是版本不同导致`device`格式不一致导致的。 您尝试下把 [代码的这里](https://github.com/HarderThenHarder/transformers_tasks/blob/173fb48d1ab1d4c26983ee13d44fae5ece623d57/RLHF/ranklist_labeler.py#L81) 做如下修改: ```python ... device=MODEL_CONFIG['device'] -> device=0 ``` 传入一个 `int` 类型的 GPU 索引,索引决定了模型在进行内容生成的时候具体使用哪块 GPU。
`ValueError: Please specify target_modules in peft_config` Hi,这个问题可能是因为没有安装指定版本的 `peft` 导致的,您是否是按照readme里的步骤进入到 `peft` 文件夹使用 `python setup.py install` 安装的呢?
Hi,通常我们把一个句子当成一个episode。 以对话系统为例,我们将生成一个句子看作是一个「序列决策」任务,每生成一个字可以看成一个 RL 中的 step。 在每一个 step 下:将先前已经生成的字(history state)作为 observation,action 是在所有词表中选择一个确定的词,action space 为词表大小(vocab_size)。 按照上述逻辑,生成一个完整的句子就是一条完整的 trajectory,包含了每一个 step 下的 action,那么 total reward 就是对这个句子的评分,这样就可以计算每一个 step action 的 discount reward(即句子序列中每一个字生成的 reward )。 希望能够解答你的问题 :)