解决GLM-4-9B-0414环境配置难题:transformers版本兼容与依赖安装指南
【免费下载链接】GLM-4-9B-0414项目地址: https://ai.gitcode.com/hf_mirrors/MindIE/GLM-4-9B-0414
GLM-4-9B-0414作为高性能AI模型,其环境配置涉及transformers版本兼容与依赖安装等关键环节。本文将提供一套完整的解决方案,帮助新手用户轻松应对环境配置挑战,顺利运行GLM-4-9B-0414模型。
🌈 环境配置前的准备工作
在开始配置GLM-4-9B-0414环境之前,需要确保满足以下约束条件:
- 部署GLM-4-0414系列模型至少需要1台Atlas 800I A2服务器
- 支持TP=1/2/4/8推理模式
📥 镜像下载与加载步骤
首先,我们需要下载并加载MindIE镜像,这是运行GLM-4-9B-0414的基础环境:
wget https://mindx.sdk.obs.cn-north-4.myhuaweicloud.com/MindIE/docker/mindie_2.0.T3-20250417-800I-A2-py311-openeuler24.03-lts-aarch64.tar.gz --no-check-certificate docker load -i ./mindie_2.0.T3-20250417-800I-A2-py311-openeuler24.03-lts-aarch64.tar.gz🚢 新建容器的两种方式
根据不同的用户权限和安全需求,提供两种容器创建方式:
特权容器启动(适用于root用户)
docker run -it -d --net=host --shm-size=1g \ --privileged \ --name <container-name> \ --device=/dev/davinci_manager \ --device=/dev/hisi_hdc \ --device=/dev/devmm_svm \ -v /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro \ -v /usr/local/sbin:/usr/local/sbin:ro \ -v /path-to-weights:/path-to-weights:ro \ <IMAGE ID> bash普通用户容器启动(更安全)
docker run -it -d --net=host --shm-size=1g \ --name <container-name> \ --device=/dev/davinci_manager \ --device=/dev/hisi_hdc \ --device=/dev/devmm_svm \ --device=/dev/davinci0 \ --device=/dev/davinci1 \ --device=/dev/davinci2 \ --device=/dev/davinci3 \ --device=/dev/davinci4 \ --device=/dev/davinci5 \ --device=/dev/davinci6 \ --device=/dev/davinci7 \ -v /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro \ -v /usr/local/sbin:/usr/local/sbin:ro \ -v /path-to-weights:/path-to-weights:ro \ <IMAGE ID> bash🔧 transformers版本兼容处理
由于GLM-4-0414系列模型依赖最新版本transformers,因此需要特别处理版本兼容性问题,使其能够与PyTorch 2.1.0协同工作。
进入容器环境
docker exec -it ${容器名称} bash下载transformers源码
git clone https://github.com/huggingface/transformers.git修改关键文件解决兼容性
- 修改
transformers/utils/generic.py文件(约355行):
将:
from torch.utils._pytree import register_pytree_node改为:
from torch.utils._pytree import _register_pytree_node完整修改部分代码如下:
def __init_subclass__(cls) -> None: """Register subclasses as pytree nodes. This is necessary to synchronize gradients when using `torch.nn.parallel.DistributedDataParallel` with `static_graph=True` with modules that output `ModelOutput` subclasses. """ if is_torch_available(): if version.parse(get_torch_version()) >= version.parse("2.2"): from torch.utils._pytree import register_pytree_node register_pytree_node( cls, _model_output_flatten, partial(_model_output_unflatten, output_type=cls), serialized_type_name=f"{cls.__module__}.{cls.__name__}", ) else: # 修改这里 from torch.utils._pytree import _register_pytree_node # 修改这里 _register_pytree_node( cls, _model_output_flatten, partial(_model_output_unflatten, output_type=cls), )- 修改
transformers/tokenization_utils_base.py文件(约2160行):
将:
with open(chat_template_file) as chat_template_handle:改为:
with open(chat_template_file, encoding="utf-8") as chat_template_handle:从源码安装transformers
pip install ./transformers确保安装后transformers版本>=4.51.3
📦 必要依赖安装
除了transformers,还需要安装einops依赖:
pip3 install einops✨ 权重文件配置
下载权重后,需要修改权重路径下的config.json文件:
- 修改
"model_type": "chatglm" - 增加键值对:
"_name_or_path": "THUDM/glm-4-9b-chat"
修改后的样例:
{ "_name_or_path": "THUDM/glm-4-9b-chat", // 增加键值对,不管是什么模型都是这个 key "architectures": ["Glm4ForCausalLM"], "attention_bias": false, "attention_dropout": 0.0, "eos_token_id": [151329, 151336, 151338], "head_dim": 128, "hidden_act": "silu", "hidden_size": 6144, "initializer_range": 0.02, "intermediate_size": 23040, "max_position_embeddings": 131072, "model_type": "chatglm", // 从 glm4 改为 chatglm "num_attention_heads": 48, "num_hidden_layers": 61, "num_key_value_heads": 8, "pad_token_id": 151329, "partial_rotary_factor": 0.5, "rms_norm_eps": 1e-5, "rope_theta": 10000.0, "tie_word_embeddings": false, "torch_dtype": "bfloat16", "transformers_version": "4.52.0.dev0", "use_cache": true, "vocab_size": 151552 }🚀 模型推理测试
完成上述配置后,可以进行模型推理测试:
对话测试
cd $ATB_SPEED_HOME_PATH torchrun --nproc_per_node 2 \ --master_port 20037 \ -m examples.run_pa \ --model_path ${权重路径} \ --input_texts 'What is deep learning?' \ --max_output_length 20🔄 服务化推理配置
如果需要将模型部署为服务,可以按照以下步骤进行配置:
修改配置文件
vim /usr/local/Ascend/mindie/latest/mindie-service/conf/config.json关键配置项:
{ ... "ServerConfig" : { ... "port" : 1025, #自定义 "managementPort" : 1026, #自定义 "metricsPort" : 1027, #自定义 ... "httpsEnabled" : false, ... }, "BackendConfig": { ... "npuDeviceIds" : [[0,1,2,3]], ... "ModelDeployConfig": { "ModelConfig" : [ { ... "modelName" : "chatglm", "modelWeightPath" : "/data/datasets/GLM-4-9B-0414", "worldSize" : 4, ... } ] }, ... } }启动服务
cd /usr/local/Ascend/mindie/latest/mindie-service/bin ./mindieservice_daemon测试服务
curl 127.0.0.1:1025/generate -d '{ "prompt": "What is deep learning?", "max_tokens": 32, "stream": false, "do_sample":true, "temperature": 0.6, "top_p": 0.95, "model": "chatglm" }'📚 扩展资源
- 更多镜像使用信息请参考官方镜像仓库文档
- 服务化推理的更多信息请参考MindIE Service用户指南
通过以上步骤,您应该能够成功配置GLM-4-9B-0414的运行环境,解决transformers版本兼容问题,并完成模型的推理测试。如果在配置过程中遇到任何问题,请查阅相关文档或提交issue获取帮助。
【免费下载链接】GLM-4-9B-0414项目地址: https://ai.gitcode.com/hf_mirrors/MindIE/GLM-4-9B-0414
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考