### 源2.0-MoE 模型 ----- **ckpt转换说明** ### 🔘 ckpt转换 我们提供的的模型文件是8路流水并行(8pp)的模型文件,我们提供了自动转换脚本,可以依次执行完转换流程,使用方式如下: **如果提前将8路流水并行合并,可以直接执行: ** ```sh bash examples/convert_hf_moe.sh ``` 在转换时需要 **如果不合并流水,可以按下面的方式进行转换: ** 首先执行转换脚本: ```sh bash examples/convert_hf_moe.sh ``` 执行这个脚本,每一路流水对应的.ckpt文件都会生成一个对应的.bin文件,等完成转换之后可以删除这些中间文件。 然后执行下面的命令: ```sh python tools/concat.py --input-path $input_path --output-path $output_path --pp_rank 8 --num_layers 24 ``` 这里的`--input-path`设置为上一步中产生的中间文件路径,这个命令会在`--output-path`设置的路径下生成一个完整的.bin文件。 ### 🔘 bin文件拆分 执行上面的转换命令后会生成一个bin文件,可以执行下面的命令将其拆分: ```sh python tools/split_bin.py --input-path $input_path --output-path $output_path ``` ### 🔘 HF模型推理 可以通过如下代码调用YuanMoE模型来生成文本: ```python import torch, transformers import sys, os sys.path.append( os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir))) from transformers import AutoModelForCausalLM,AutoTokenizer,LlamaTokenizer print("Creat tokenizer...") tokenizer = LlamaTokenizer.from_pretrained('IEITYuan/Yuan2-hf-moe', add_eos_token=False, add_bos_token=False, eos_token='') tokenizer.add_tokens(['', '', '', '', '', '', '','','','','','','','',''], special_tokens=True) print("Creat model...") model = AutoModelForCausalLM.from_pretrained('IEITYuan/Yuan2-hf-moe', device_map='auto', torch_dtype=torch.bfloat16, trust_remote_code=True) inputs = tokenizer("请问目前最先进的机器学习算法有哪些?", return_tensors="pt")["input_ids"].to("cuda:0") outputs = model.generate(inputs,do_sample=False,max_length=100) print(tokenizer.decode(outputs[0])) ```