BitCPM-CANN-3B-unquantized完整部署教程从训练到推理的完整流程【免费下载链接】BitCPM-CANN-3B-unquantizedBitCPM-CANN-3B-unquantized 是 BitCPM-CANN-3B 的未量化量化感知训练QAT检查点专为持续预训练和微调而设计。它保留了全精度的潜在权重并通过 modeling.py 中定义的三元伪量化器权重 → {-1, 0, 1}带分组缩放通过 STE 训练使模型能够在量化约束下继续学习。项目地址: https://ai.gitcode.com/OpenBMB/BitCPM-CANN-3B-unquantizedBitCPM-CANN-3B-unquantized 是 OpenBMB 开源社区推出的一个专为量化感知训练设计的未量化检查点模型。这个模型保留了全精度的潜在权重并通过三元伪量化器实现权重到{-1, 0, 1}的转换让您可以在量化约束下继续训练和微调模型。 快速了解BitCPM-CANN-3B-unquantizedBitCPM-CANN-3B-unquantized是一个专为持续预训练和微调而设计的量化感知训练检查点。它采用三元量化技术将权重映射到{-1, 0, 1}三个值同时保持全精度潜在权重通过STEStraight-Through Estimator训练方法让模型在量化约束下继续学习。重要提醒 ⚠️这个模型不直接用于推理如果您需要推理模型请使用伪量化版本openbmb/BitCPM-CANN-3B。 环境准备与安装1. 克隆仓库首先我们需要克隆项目仓库到本地git clone https://gitcode.com/OpenBMB/BitCPM-CANN-3B-unquantized cd BitCPM-CANN-3B-unquantized2. 环境配置根据您的硬件平台选择相应的环境配置NPU环境华为昇腾# 使用华为NPU官方镜像 docker pull swr.cn-south-1.myhuaweicloud.com/ascendhub/mindspeed-llm:openeuler22.03-mindspeed-llm-2.3.0-a3-armGPU环境# 安装Python依赖 cd example pip install -r requirements.txt3. 依赖安装进入example目录安装所有必要的依赖cd example pip install torch transformers deepspeed datasets accelerate️ 持续预训练Continue Pre-training数据集准备BitCPM支持多种数据集格式。我们以C4-Pro数据集为例# 下载C4-Pro数据集 from datasets import load_dataset dataset load_dataset(gair-prox/c4-pro)配置训练参数编辑 example/run.sh 文件设置您的模型和数据路径MODEL_PATH/path/to/BitCPM-CANN-3B-unquantized/ DATA_PATH/path/to/c4-pro/data/your_file.parquet OUTPUT_DIR./output启动预训练使用DeepSpeed进行分布式训练bash run.sh训练监控训练过程中您可以实时监控损失曲线。BitCPM在GPU和NPU上的训练表现高度一致GPU平台上的预训练损失曲线NPU平台上的预训练损失曲线 监督微调Supervised Fine-tuningSFT数据集准备我们使用UltraChat 200k数据集进行监督微调# 下载UltraChat数据集 from datasets import load_dataset dataset load_dataset(HuggingFaceH4/ultrachat_200k)配置SFT参数编辑 example/run_sft.sh 文件MODEL_PATH/path/to/BitCPM-CANN-3B-unquantized/ DATA_PATH/path/to/ultrachat_200k/data/your_file.parquet OUTPUT_DIR./sft_output启动SFT训练bash run_sft.shSFT训练结果SFT训练同样在GPU和NPU上表现一致GPU平台上的监督微调损失曲线NPU平台上的监督微调损失曲线 模型转换与量化量化转换的重要性完成训练后您需要将QAT检查点转换为伪量化模型才能用于推理。这是关键的一步使用qat-convert.py转换BitCPM提供了专门的转换脚本 qat-convert.pypython qat-convert.py \ --input_bin /path/to/finetuned-pytorch.bin \ --output /path/to/output-pseudo-quantized-pytorch.bin \ --quant_type ternary \ --group_size -1转换参数说明--quant_type ternary指定三元量化--group_size -1使用全连接层分组量化--input_bin输入的训练后模型文件--output输出的伪量化模型路径 完整工作流程图示让我们通过一个完整的流程图来理解BitCPM-CANN-3B-unquantized的训练到推理流程┌─────────────────────────────────┐ │ BitCPM-CANN-3B-unquantized │ ← 原始QAT检查点包含伪量化器 └───────────────┬─────────────────┘ │ ▼ 训练DeepSpeed / LLaMA Factory / HF Trainer / ... ┌─────────────────────────────────┐ │ 微调后的检查点 │ ← 仍包含未融合的QAT参数 └───────────────┬─────────────────┘ │ ▼ python qat-convert.py --quant_type ternary --group_size -1 ┌─────────────────────────────────┐ │ 伪量化模型 │ ← 准备就绪的推理模型 └─────────────────────────────────┘️ 高级配置与优化DeepSpeed配置BitCPM提供了两种DeepSpeed配置ZeRO-2配置example/ds_config_z2.json - 默认配置ZeRO-3配置example/ds_config.json - 带CPU卸载训练参数调优在 example/train.py 中您可以调整以下关键参数max_seq_length: 最大序列长度默认1024per_device_train_batch_size: 每设备批次大小gradient_accumulation_steps: 梯度累积步数learning_rate: 学习率默认4e-5warmup_ratio: 学习率预热比例多GPU/多NPU训练对于多卡训练修改环境变量# GPU环境 export CUDA_VISIBLE_DEVICES0,1,2,3 # NPU环境 export ASCEND_RT_VISIBLE_DEVICES0,1,2,3 模型架构解析BitCPM-CANN-3B-unquantized的核心在于其量化感知训练架构。让我们深入了解关键组件三元伪量化器在 modeling_llama.py 中定义的SteTernaryQuantizer是实现三元量化的核心class SteTernaryQuantizer(nn.Module): def forward(self, x): scales 1.0 / (x.abs().mean(dim1, keepdimTrue).clamp_(min1e-5)) x_q (torch.clamp(torch.round(x * scales),-1,1) / scales) return x (x_q - x).detach()量化线性层模型使用LinearQuantizer包装所有线性层确保训练时应用量化class LinearQuantizer(nn.Linear): def __init__(self, in_features, out_features, biasFalse, quant_typeternary, bit4, group_size-1): super().__init__(in_features, out_features, bias) self.quantizer get_quantizer(quant_type, bit, group_size) 性能监控与调优损失曲线分析训练过程中您可以通过TensorBoard监控训练进度tensorboard --logdir/data/tensorboard/pretrain内存优化技巧梯度检查点启用梯度检查点减少内存占用混合精度训练使用bf16或fp16精度梯度累积通过累积梯度模拟更大的批次大小常见问题解决问题1内存不足解决方案减少per_device_train_batch_size增加gradient_accumulation_steps启用梯度检查点问题2训练速度慢解决方案检查数据加载器配置优化数据预处理流水线使用更快的存储介质 部署到生产环境推理模型加载转换后的模型可以像普通HuggingFace模型一样加载from transformers import AutoModelForCausalLM, AutoTokenizer model AutoModelForCausalLM.from_pretrained( path/to/converted/model, torch_dtypetorch.bfloat16, trust_remote_codeTrue ) tokenizer AutoTokenizer.from_pretrained(path/to/converted/model)性能基准测试在部署前建议进行性能测试import time # 测试推理速度 start_time time.time() output model.generate(input_ids, max_length512) end_time time.time() print(f推理时间{end_time - start_time:.2f}秒) 最佳实践总结始终使用trust_remote_codeTrue这是加载BitCPM模型的关键选择合适的硬件平台GPU和NPU都支持根据资源选择监控训练过程定期检查损失曲线和内存使用正确转换模型训练后必须使用qat-convert.py转换数据预处理优化确保数据格式正确 未来发展方向BitCPM-CANN系列仍在不断发展中。当前支持的模型包括模型推理版本训练版本BitCPM-CANN-0.5Bopenbmb/BitCPM-CANN-0.5Bopenbmb/BitCPM-CANN-0.5B-unquantizedBitCPM-CANN-1Bopenbmb/BitCPM-CANN-1Bopenbmb/BitCPM-CANN-1B-unquantizedBitCPM-CANN-3Bopenbmb/BitCPM-CANN-3Bopenbmb/BitCPM-CANN-3B-unquantizedBitCPM-CANN-8Bopenbmb/BitCPM-CANN-8Bopenbmb/BitCPM-CANN-8B-unquantized 结语通过这篇完整的部署教程您已经掌握了BitCPM-CANN-3B-unquantized从环境配置、数据准备、模型训练到最终部署的完整流程。这个强大的量化感知训练框架让您能够在保持模型性能的同时大幅减少存储和计算资源需求。记住关键点训练时使用unquantized版本推理时使用转换后的伪量化版本。祝您在AI模型训练和部署的旅程中取得成功小贴士如果您在部署过程中遇到任何问题建议查看项目中的示例文件和配置文件这些文件包含了大量实用的配置示例和最佳实践。【免费下载链接】BitCPM-CANN-3B-unquantizedBitCPM-CANN-3B-unquantized 是 BitCPM-CANN-3B 的未量化量化感知训练QAT检查点专为持续预训练和微调而设计。它保留了全精度的潜在权重并通过 modeling.py 中定义的三元伪量化器权重 → {-1, 0, 1}带分组缩放通过 STE 训练使模型能够在量化约束下继续学习。项目地址: https://ai.gitcode.com/OpenBMB/BitCPM-CANN-3B-unquantized创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
BitCPM-CANN-3B-unquantized完整部署教程:从训练到推理的完整流程
BitCPM-CANN-3B-unquantized完整部署教程从训练到推理的完整流程【免费下载链接】BitCPM-CANN-3B-unquantizedBitCPM-CANN-3B-unquantized 是 BitCPM-CANN-3B 的未量化量化感知训练QAT检查点专为持续预训练和微调而设计。它保留了全精度的潜在权重并通过 modeling.py 中定义的三元伪量化器权重 → {-1, 0, 1}带分组缩放通过 STE 训练使模型能够在量化约束下继续学习。项目地址: https://ai.gitcode.com/OpenBMB/BitCPM-CANN-3B-unquantizedBitCPM-CANN-3B-unquantized 是 OpenBMB 开源社区推出的一个专为量化感知训练设计的未量化检查点模型。这个模型保留了全精度的潜在权重并通过三元伪量化器实现权重到{-1, 0, 1}的转换让您可以在量化约束下继续训练和微调模型。 快速了解BitCPM-CANN-3B-unquantizedBitCPM-CANN-3B-unquantized是一个专为持续预训练和微调而设计的量化感知训练检查点。它采用三元量化技术将权重映射到{-1, 0, 1}三个值同时保持全精度潜在权重通过STEStraight-Through Estimator训练方法让模型在量化约束下继续学习。重要提醒 ⚠️这个模型不直接用于推理如果您需要推理模型请使用伪量化版本openbmb/BitCPM-CANN-3B。 环境准备与安装1. 克隆仓库首先我们需要克隆项目仓库到本地git clone https://gitcode.com/OpenBMB/BitCPM-CANN-3B-unquantized cd BitCPM-CANN-3B-unquantized2. 环境配置根据您的硬件平台选择相应的环境配置NPU环境华为昇腾# 使用华为NPU官方镜像 docker pull swr.cn-south-1.myhuaweicloud.com/ascendhub/mindspeed-llm:openeuler22.03-mindspeed-llm-2.3.0-a3-armGPU环境# 安装Python依赖 cd example pip install -r requirements.txt3. 依赖安装进入example目录安装所有必要的依赖cd example pip install torch transformers deepspeed datasets accelerate️ 持续预训练Continue Pre-training数据集准备BitCPM支持多种数据集格式。我们以C4-Pro数据集为例# 下载C4-Pro数据集 from datasets import load_dataset dataset load_dataset(gair-prox/c4-pro)配置训练参数编辑 example/run.sh 文件设置您的模型和数据路径MODEL_PATH/path/to/BitCPM-CANN-3B-unquantized/ DATA_PATH/path/to/c4-pro/data/your_file.parquet OUTPUT_DIR./output启动预训练使用DeepSpeed进行分布式训练bash run.sh训练监控训练过程中您可以实时监控损失曲线。BitCPM在GPU和NPU上的训练表现高度一致GPU平台上的预训练损失曲线NPU平台上的预训练损失曲线 监督微调Supervised Fine-tuningSFT数据集准备我们使用UltraChat 200k数据集进行监督微调# 下载UltraChat数据集 from datasets import load_dataset dataset load_dataset(HuggingFaceH4/ultrachat_200k)配置SFT参数编辑 example/run_sft.sh 文件MODEL_PATH/path/to/BitCPM-CANN-3B-unquantized/ DATA_PATH/path/to/ultrachat_200k/data/your_file.parquet OUTPUT_DIR./sft_output启动SFT训练bash run_sft.shSFT训练结果SFT训练同样在GPU和NPU上表现一致GPU平台上的监督微调损失曲线NPU平台上的监督微调损失曲线 模型转换与量化量化转换的重要性完成训练后您需要将QAT检查点转换为伪量化模型才能用于推理。这是关键的一步使用qat-convert.py转换BitCPM提供了专门的转换脚本 qat-convert.pypython qat-convert.py \ --input_bin /path/to/finetuned-pytorch.bin \ --output /path/to/output-pseudo-quantized-pytorch.bin \ --quant_type ternary \ --group_size -1转换参数说明--quant_type ternary指定三元量化--group_size -1使用全连接层分组量化--input_bin输入的训练后模型文件--output输出的伪量化模型路径 完整工作流程图示让我们通过一个完整的流程图来理解BitCPM-CANN-3B-unquantized的训练到推理流程┌─────────────────────────────────┐ │ BitCPM-CANN-3B-unquantized │ ← 原始QAT检查点包含伪量化器 └───────────────┬─────────────────┘ │ ▼ 训练DeepSpeed / LLaMA Factory / HF Trainer / ... ┌─────────────────────────────────┐ │ 微调后的检查点 │ ← 仍包含未融合的QAT参数 └───────────────┬─────────────────┘ │ ▼ python qat-convert.py --quant_type ternary --group_size -1 ┌─────────────────────────────────┐ │ 伪量化模型 │ ← 准备就绪的推理模型 └─────────────────────────────────┘️ 高级配置与优化DeepSpeed配置BitCPM提供了两种DeepSpeed配置ZeRO-2配置example/ds_config_z2.json - 默认配置ZeRO-3配置example/ds_config.json - 带CPU卸载训练参数调优在 example/train.py 中您可以调整以下关键参数max_seq_length: 最大序列长度默认1024per_device_train_batch_size: 每设备批次大小gradient_accumulation_steps: 梯度累积步数learning_rate: 学习率默认4e-5warmup_ratio: 学习率预热比例多GPU/多NPU训练对于多卡训练修改环境变量# GPU环境 export CUDA_VISIBLE_DEVICES0,1,2,3 # NPU环境 export ASCEND_RT_VISIBLE_DEVICES0,1,2,3 模型架构解析BitCPM-CANN-3B-unquantized的核心在于其量化感知训练架构。让我们深入了解关键组件三元伪量化器在 modeling_llama.py 中定义的SteTernaryQuantizer是实现三元量化的核心class SteTernaryQuantizer(nn.Module): def forward(self, x): scales 1.0 / (x.abs().mean(dim1, keepdimTrue).clamp_(min1e-5)) x_q (torch.clamp(torch.round(x * scales),-1,1) / scales) return x (x_q - x).detach()量化线性层模型使用LinearQuantizer包装所有线性层确保训练时应用量化class LinearQuantizer(nn.Linear): def __init__(self, in_features, out_features, biasFalse, quant_typeternary, bit4, group_size-1): super().__init__(in_features, out_features, bias) self.quantizer get_quantizer(quant_type, bit, group_size) 性能监控与调优损失曲线分析训练过程中您可以通过TensorBoard监控训练进度tensorboard --logdir/data/tensorboard/pretrain内存优化技巧梯度检查点启用梯度检查点减少内存占用混合精度训练使用bf16或fp16精度梯度累积通过累积梯度模拟更大的批次大小常见问题解决问题1内存不足解决方案减少per_device_train_batch_size增加gradient_accumulation_steps启用梯度检查点问题2训练速度慢解决方案检查数据加载器配置优化数据预处理流水线使用更快的存储介质 部署到生产环境推理模型加载转换后的模型可以像普通HuggingFace模型一样加载from transformers import AutoModelForCausalLM, AutoTokenizer model AutoModelForCausalLM.from_pretrained( path/to/converted/model, torch_dtypetorch.bfloat16, trust_remote_codeTrue ) tokenizer AutoTokenizer.from_pretrained(path/to/converted/model)性能基准测试在部署前建议进行性能测试import time # 测试推理速度 start_time time.time() output model.generate(input_ids, max_length512) end_time time.time() print(f推理时间{end_time - start_time:.2f}秒) 最佳实践总结始终使用trust_remote_codeTrue这是加载BitCPM模型的关键选择合适的硬件平台GPU和NPU都支持根据资源选择监控训练过程定期检查损失曲线和内存使用正确转换模型训练后必须使用qat-convert.py转换数据预处理优化确保数据格式正确 未来发展方向BitCPM-CANN系列仍在不断发展中。当前支持的模型包括模型推理版本训练版本BitCPM-CANN-0.5Bopenbmb/BitCPM-CANN-0.5Bopenbmb/BitCPM-CANN-0.5B-unquantizedBitCPM-CANN-1Bopenbmb/BitCPM-CANN-1Bopenbmb/BitCPM-CANN-1B-unquantizedBitCPM-CANN-3Bopenbmb/BitCPM-CANN-3Bopenbmb/BitCPM-CANN-3B-unquantizedBitCPM-CANN-8Bopenbmb/BitCPM-CANN-8Bopenbmb/BitCPM-CANN-8B-unquantized 结语通过这篇完整的部署教程您已经掌握了BitCPM-CANN-3B-unquantized从环境配置、数据准备、模型训练到最终部署的完整流程。这个强大的量化感知训练框架让您能够在保持模型性能的同时大幅减少存储和计算资源需求。记住关键点训练时使用unquantized版本推理时使用转换后的伪量化版本。祝您在AI模型训练和部署的旅程中取得成功小贴士如果您在部署过程中遇到任何问题建议查看项目中的示例文件和配置文件这些文件包含了大量实用的配置示例和最佳实践。【免费下载链接】BitCPM-CANN-3B-unquantizedBitCPM-CANN-3B-unquantized 是 BitCPM-CANN-3B 的未量化量化感知训练QAT检查点专为持续预训练和微调而设计。它保留了全精度的潜在权重并通过 modeling.py 中定义的三元伪量化器权重 → {-1, 0, 1}带分组缩放通过 STE 训练使模型能够在量化约束下继续学习。项目地址: https://ai.gitcode.com/OpenBMB/BitCPM-CANN-3B-unquantized创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考