an elegant bert4torch
Project description
Documentation | Torch4keras | Examples | build_MiniLLM_from_scratch | bert4vector
目录
1. 下载安装
安装稳定版
pip install bert4torch
安装最新版
pip install git+https://github.com/Tongjilibo/bert4torch
- 注意事项:pip包的发布慢于git上的开发版本,git clone注意引用路径,注意权重是否需要转换
- 测试用例:
git clone https://github.com/Tongjilibo/bert4torch
,修改example中的预训练模型文件路径和数据路径即可启动脚本 - 自行训练:针对自己的数据,修改相应的数据处理代码块
- 开发环境:原使用
torch==1.10
版本进行开发,现已切换到torch2.0
开发,如其他版本遇到不适配,欢迎反馈
2. 功能
-
LLM模型: 加载chatglm、llama、 baichuan、ziya、bloom等开源大模型权重进行推理和微调,命令行一行部署大模型
-
核心功能:加载bert、roberta、albert、xlnet、nezha、bart、RoFormer、RoFormer_V2、ELECTRA、GPT、GPT2、T5、GAU-alpha、ERNIE等预训练权重继续进行finetune、并支持在bert基础上灵活定义自己模型
-
丰富示例:包含llm、pretrain、sentence_classfication、sentence_embedding、sequence_labeling、relation_extraction、seq2seq、serving等多种解决方案
-
实验验证:已在公开数据集实验验证,使用如下examples数据集和实验指标
-
易用trick:集成了常见的trick,即插即用
-
其他特性:加载transformers库模型一起使用;调用方式简洁高效;有训练进度条动态展示;配合torchinfo打印参数量;默认Logger和Tensorboard简便记录训练过程;自定义fit过程,满足高阶需求
-
训练过程:
功能 | bert4torch | transformers | 备注 |
---|---|---|---|
训练进度条 | ✅ | ✅ | 进度条打印loss和定义的metrics |
分布式训练dp/ddp | ✅ | ✅ | torch自带dp/ddp |
各类callbacks | ✅ | ✅ | 日志/tensorboard/earlystop/wandb等 |
大模型推理,stream/batch输出 | ✅ | ✅ | 各个模型是通用的,无需单独维护脚本 |
大模型微调 | ✅ | ✅ | lora依赖peft库,pv2自带 |
丰富tricks | ✅ | ❌ | 对抗训练等tricks即插即用 |
代码简洁易懂,自定义空间大 | ✅ | ❌ | 代码复用度高, keras代码训练风格 |
仓库的维护能力/影响力/使用量/兼容性 | ❌ | ✅ | 目前仓库个人维护 |
一键部署大模型 |
3. 快速上手
3.1 上手教程
3.2 命令行快速部署大模型服务
- 本地 / 联网加载
# 联网下载全部文件 bert4torch-llm-server --checkpoint_path Qwen2-0.5B-Instruct # 加载本地大模型,联网下载bert4torch_config.json bert4torch-llm-server --checkpoint_path /data/pretrain_ckpt/Qwen/Qwen2-0.5B-Instruct --config_path Qwen/Qwen2-0.5B-Instruct # 加载本地大模型,且bert4torch_config.json已经下载并放于同名目录下 bert4torch-llm-server --checkpoint_path /data/pretrain_ckpt/Qwen/Qwen2-0.5B-Instruct
- 命令行 / gradio网页 / openai_api
# 命令行 bert4torch-llm-server --checkpoint_path /data/pretrain_ckpt/Qwen/Qwen2-0.5B-Instruct --mode cli # gradio网页 bert4torch-llm-server --checkpoint_path /data/pretrain_ckpt/Qwen/Qwen2-0.5B-Instruct --mode gradio # openai_api bert4torch-llm-server --checkpoint_path /data/pretrain_ckpt/Qwen/Qwen2-0.5B-Instruct --mode openai
- 命令行聊天示例
4. 版本和更新历史
4.1 版本历史
更新日期 | bert4torch | torch4keras | 版本说明 |
---|---|---|---|
20240928 | 0.5.4 | 0.2.7 | 【新功能】增加deepseek系列、MiniCPM、MiniCPMV、llama3.2、Qwen2.5;支持device_map=auto;【修复】修复batch_generate和n>1的bug |
20240814 | 0.5.3 | 0.2.6 | 【新功能】增加llama3.1/Yi1.5;自动选择从hfmirror下载;支持命令行参数bert4torch-llm-server |
20240801 | 0.5.2 | 0.2.5 | 【新功能】chatglm/qwen系列支持function call调用, 增加internlm2系列;【小优化】简化pipeline中chat demo的调用,generate的终止token元素允许为列表, 统一rope_scaling参数名,增加rope衍生类;【bug】修复flash_attn2的推理bug, 修复bart的tie_word_embedding的bug |
4.2 更新历史
5. 预训练权重
-
预训练模型支持多种代码加载方式
from bert4torch.models import build_transformer_model # 1. 仅指定config_path: 从头初始化模型结构, 不加载预训练模型 model = build_transformer_model('./model/bert4torch_config.json') # 2. 仅指定checkpoint_path: ## 2.1 文件夹路径: 自动寻找路径下的*.bin/*.safetensors权重文件 + 需把bert4torch_config.json下载并放于该目录下 model = build_transformer_model(checkpoint_path='./model') ## 2.2 文件路径/列表: 文件路径即权重路径/列表, bert4torch_config.json会从同级目录下寻找 model = build_transformer_model(checkpoint_path='./pytorch_model.bin') ## 2.3 model_name: hf上预训练权重名称, 会自动下载hf权重以及bert4torch_config.json文件 model = build_transformer_model(checkpoint_path='bert-base-chinese') # 3. 同时指定config_path和checkpoint_path(本地路径名或model_name排列组合): # 本地路径从本地加载,pretrained_model_name会联网下载 config_path = './model/bert4torch_config.json' # 或'bert-base-chinese' checkpoint_path = './model/pytorch_model.bin' # 或'bert-base-chinese' model = build_transformer_model(config_path, checkpoint_path)
-
预训练权重链接和bert4torch_config.json
*注:
高亮格式
(如bert-base-chinese
)的表示可直接build_transformer_model()
联网下载- 国内镜像网站加速下载
HF_ENDPOINT=https://hf-mirror.com python your_script.py
export HF_ENDPOINT=https://hf-mirror.com
后再执行python代码- 在python代码开头如下设置
import os os.environ['HF_ENDPOINT'] = "https://hf-mirror.com"
6. 鸣谢
- 感谢苏神实现的bert4keras,本实现有不少地方参考了bert4keras的源码,在此衷心感谢大佬的无私奉献;
- 其次感谢项目bert4pytorch,也是在该项目的指引下给了我用pytorch来复现bert4keras的想法和思路。
7. 引用
@misc{bert4torch,
title={bert4torch},
author={Bo Li},
year={2022},
howpublished={\url{https://github.com/Tongjilibo/bert4torch}},
}
8. 其他
- Wechat & Star History Chart
- 微信群人数超过200个(有邀请限制),可添加个人微信拉群
微信号 |
微信群 |
Star History Chart |
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file bert4torch-0.5.4.tar.gz
.
File metadata
- Download URL: bert4torch-0.5.4.tar.gz
- Upload date:
- Size: 237.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.8.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 67276e1abbff78d2fd87f153fa3a295a7e006f691f938ff8107776e4def38107 |
|
MD5 | d2bc176beabc67059cdce4d94114fa0b |
|
BLAKE2b-256 | 36d4b9c1691ebd6016143562ff837dfe02576e28d47a16238e2085263a1f8bb4 |