Ziqing Yang

Results 212 comments of Ziqing Yang

如果内存够,可以试试不指定offload_dir; 此外,请升级accelerate版本再试试

利用sentencepiece提供的api修改,具体可以看 https://github.com/google/sentencepiece/issues/121 和 https://github.com/google/sentencepiece/issues/426

> > 利用sentencepiece提供的api修改,具体可以看 [google/sentencepiece#121](https://github.com/google/sentencepiece/issues/121) 和 [google/sentencepiece#426](https://github.com/google/sentencepiece/issues/426) > > 感谢大佬指导!再请教您个问题:sentencepiece文件myly.model可以手动增加一个token进去作为词表吗?比如myly.model文件之前没有[PAD]这个token,我怎么通过python程序加到sentencepiece的myly.model文件里面去呢 可以,参看 [google/sentencepiece#121](https://github.com/google/sentencepiece/issues/121) 中的操作:要添加的话`m.pieces.append(xxx)`就可以了。

> 通过sentencepiece指定BPE分词来训练词表,训练完了会得到*.model的文件。原始llama词表是tokenizer.model。自己写代码通过m.pieces.append(xxx)来合并两个词表(去重),作者提供的Chinese_llama也有tokenizer.model文件,你可以自己打出来看一下就知道了,其实就是简单的append+去重(QAQ) 是这样

我们稍后会更新合并词表的代码和合并用的20K中文词表,有疑问的可以参考。

不使用CUDA,只用内存,能正常合并吗? 同时建议尝试更新accelerate等库,以及使用--offload_dir参数,以降低内存消耗

> 不使用CUDA,只用内存,能正常合并吗? 开关参数怎么设置呢? 内存是 120G的,应该够了吧 ```bash CUDA_VISIBLE_DEVICES= python merge_llama_with_chinese_lora.py ...... ```

本身llama tokenizer原生也是没有停止符的 当然你想加停止符也可以,对预训练影响不大

不好意思,说得不准确 在transformers里llama tokenizer在默认参数下默认是不使用eos的, llama原版的代码里在生成时也未使用eos : [ prompt_tokens = [self.tokenizer.encode(x, bos=True, eos=False) for x in prompts]](https://github.com/facebookresearch/llama/blob/1076b9c51c77ad06e9d7ba8a4c6df775741732bd/llama/generation.py#L28)

因为是在run_clm.py基础上预训练的,所以我们没有对它的数据格式改动太多。我们也考虑了预训练没有``的影响,不过最终认为影响不大,原因如下(当然,我并不知道LLaMA原版在预训练时有没有用``): * 对于预训练模型,如果直接拿来做生成,可以把eos设置成bos,因为按预训练数据的组织形式,实际上``也充当了上一句eos的功能 * 另一方面,在SFT训练中,``是加了回来的;我们实验也证实了在SFT阶段模型也是能学到停止符的含义的