[03/18/2024] 虎博TigerBot升级,支持100K上下文长度 (70b and 13b chat) 🔥 [models];TigerBot医疗大模型被AAAI 2024 Spring Symposium on Clinical Foundation Models录取 [paper]。
# 可以根据实际硬件情况调整max_input/generate_length
export PYTHONPATH='./' ; export CUDA_VISIBLE_DEVICES=0 ; streamlit run apps/web_demo.py -- --model_path tigerbot-70b-chat-v6 --rope_scaling yarn --rope_factor 8 --max_input_length 37888 --max_generate_length 62112
[01/18/2024] 新一代的TigerBot基座模型训练了我们认为最大最高质量的中文数据。为了验证,我们做了个有趣的测试:我们让Tigerbot-70b-chat和GPT-4-Turbo对战40局成语接龙,各先出20局。每局中无法成功接龙成语者输(以权威成语词典为准),比分 Tigerbot:GPT-4 = 24:16。 基于此,Tigerbot发布第一款基于大模型的小游戏[TigerBot成语接龙],移动端扫如下二维码参与,有机会赢取顶配iPhone Pro Max. 🔥
[12/29/2023] Tigerbot发表技术报告(arXiv preprint),分享我们在大模型狂飙和应用落地方面的一些技术细节和浅见 🔥 [paper]
[12/08/2023] Tigerbot family新版模型发布,bigger and better 🔥 [模型下载][测评]
[10/19/2023] Long(16k)-Tigerbot 发布
[9/27/2023] Tigerbot-70b-chat-api发布function calling功能: [tech report][tigerbot-api]
[9/26/2023] Tigerbot-70b-chat(v3)和Tigerbot-13b-chat(v4)更新发布: [模型下载]
[9/15/2023] Tigerbot-70b-chat(v2)和Tigerbot-13b-chat(v3)更新发布: [模型下载]
[9/06/2023] Tigerbot-70b发布,继续开源和免费商用: [paper][模型下载]: fire:
[8/25/2023] TigerBot更新13b-base模型: [模型下载][测评]
[8/21/2023] TigerBot更新发布7b和13b base/chat模型: [模型下载][测评]
[8/19/2023] TigerBot推理(tigerbot.com和tigerbot-api)启用 TGI,达到3x QPS和2x 响应速度。
https://github.com/TigerResearch/TigerBot/assets/32117316/0a8c11b9-6a10-4e37-80e8-45b482e76c51
[8/08/2023] TigerBot 2023.08 (V3) release: 虎博很高兴的发布TigerBot-13B大模型,在Llama-2的基础上以虎博积累的技术和数据继续训练,不但保持了Llama-2出色的英文能力,更是在中文能力上填补了Llama-2的不足,各项主流中文任务中超过Llama-2的49%,在开源同类模型中具有竞争力。: fire: [paper]
python infer.py --model_path TigerResearch/tigerbot-13b-chat
[8/03/2023] TigerBot 兼容 OpenAI 接口。[tigerbot-api]
[7/26/2023] TigerBot 开放 search-api [tigerbot-api]
[7/08/2023] TigerBot 2023.07 (V2) release [paper] 🔥
tigerbot-7b-base (v2), 在 1.5TB 高质量数据上充分预训练(千卡耗时 4 周,算力成本~ 300 万),在中英文公开数据测评优于 bloom/llama 同等模型 15-30%;[测评][模型下载]
tigerbot-7b-sft (v2), 在 base-v2 基础上微调的 sft-v2 在 2000 万/20G 高质量清洗和配比的数据上充分训练,在 9 项公开语料测评上优于 sft-v1 9.3%;[测评][模型下载]
新模型可通过以下代码加载:
import transformers
# 下载过旧版的用户需要指定`force_download=True`避免使用旧版缓存
model_sft = transformers.AutoModelForCausalLM.from_pretrained('TigerResearch/tigerbot-7b-sft', force_download=True)
model_base = transformers.AutoModelForCausalLM.from_pretrained('TigerResearch/tigerbot-7b-base', force_download=True)
tigerbot 开启搜索模式,对接主流中英文搜索引擎,和结构化工具(如天气,股市,计算器等),打开 LLM+search 的应用场景,同时开放 chat-api with internet search switch;[TigerBot with search mode (default off) 🌏][paper]
tigerbot 开启流式生成模式,同时开放 chat-api with streaming switch; [TigerBot][TigerBot-API]
tigerbot-api 全新升级,开放 LLM 应用开发常用的 api 工具,包括:LLM (chat, plugin, finetune), text (embedding, summarization, pdf2text), vision (text2image)。[TigerBot-API]
[6/27/2023] PEFT TigerBot with QLoRA: 在单张 3090 上使用 qlora 微调 tigerbot-7b-sft,加速 16 倍,和/或减少 GPU3/4,同时防止了对下游数据的过拟合。[code] [paper][模型下载]
conda create --name tigerbot python=3.8
conda activate tigerbot
conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia
git clone https://github.com/TigerResearch/TigerBot
cd TigerBot
pip install -r requirements.txt
Model | Version | Architecture | Disk size (GB) | Note |
---|---|---|---|---|
tigerbot-70b-base | v2 [🤗][🤖] | llama-2 | 129 | From llama-2-70b weights |
v1 [🤗][🤖] | llama-2 | 129 | From llama-2-70b weights | |
tigerbot-70b-chat | v6 [🤗][🤖] | llama-2 | 129 | From tigerbot-70b-base v2 |
v4-4k [🤗][🤖] | llama-2 | 129 | From tigerbot-70b-base v2 | |
v4 [🤗][🤖] | llama-2 | 129 | From tigerbot-70b-base v2 | |
v3 [🤗][🤖] | llama-2 | 129 | From tigerbot-70b-base v1 | |
v2 [🤗][🤖] | llama-2 | 129 | From tigerbot-70b-base v1 | |
v1 [🤗] | llama-2 | 129 | From tigerbot-70b-base v1 | |
tigerbot-70b-chat-4bit | v6 [🤗] | llama-2 | 37 | From tigerbot-70b-chat v6 |
v4 [🤗] | llama-2 | 37 | From tigerbot-70b-chat v4 | |
v3 [🤗] | llama-2 | 37 | From tigerbot-70b-chat v3 | |
v2 [🤗] | llama-2 | 37 | From tigerbot-70b-chat v2 | |
v1 [🤗] | llama-2 | 37 | From tigerbot-70b-chat v1 | |
tigerbot-13b-base | v3 [🤗][🤖] | llama-2 | 26.6 | From llama-2-13b weights |
v2 [🤗][🤖] | llama-2 | 26.6 | From llama-2-13b weights | |
v1 [🤗] | llama-2 | 26.6 | From llama-2-13b weights | |
tigerbot-13b-chat | v6 [🤗][🤖] | llama-2 | 26.6 | From tigerbot-13b-base v3 |
v5 [🤗][🤖] | llama-2 | 26.6 | From tigerbot-13b-base v3 | |
v5 [🤗][🤖] | llama-2 | 26.6 | From tigerbot-13b-base v3 | |
v4 [🤗][🤖] | llama-2 | 26.6 | From tigerbot-13b-base v2 | |
v3 [🤗][🤖] | llama-2 | 26.6 | From tigerbot-13b-base v2 | |
v2 [🤗] | llama-2 | 26.6 | From tigerbot-13b-base v2 | |
v1 [🤗] | llama-2 | 26.6 | From tigerbot-13b-base v1 | |
tigerbot-13b-chat-4bit | v6 [🤗] | llama-2 | 11.5 | From tigerbot-13b-chat v6 |
v5 [🤗] | llama-2 | 11.5 | From tigerbot-13b-chat v5-4k | |
v4 [🤗] | llama-2 | 11.5 | From tigerbot-13b-chat v4 | |
tigerbot-7b-base | v3 [🤗][🤖] | llama-2 | 13.9 | From llama-2-7b weights |
v2 [🤗] | bloom | 16.2 | From bloom weights | |
v1 [🤗] | bloom | 16.2 | From bloom weights | |
tigerbot-7b-chat | v3 [🤗][🤖] | llama-2 | 13.9 | From tigerbot-7b-base v3 |
v2 [🤗] | bloom | 16.2 | From tigerbot-7b-base v2 | |
v1 [🤗] | bloom | 16.2 | From tigerbot-7b-base v1 | |
tigerbot-7b-chat-8bit | v3 [🤗] | llama-2 | 10.8 | From tigerbot-7b-chat v3 |
tigerbot-7b-chat-4bit | v3 [🤗] | llama-2 | 6.5 | From tigerbot-7b-chat v3 |
tigerbot-180b-base | v2 [🤗][🤖] | bloom | 347.6 | From bloom weights |
tigerbot-180b-chat | v2 [🤗][🤖] | bloom | 347.6 | From tigerbot-180b-chat v2 |
v1 [🤗] | bloom | 347.6 | From bloom weights |
CUDA_VISIBLE_DEVICES=0 python infer.py --model_path tigerbot-13b-chat --max_input_length 1024 --max_generate_length 1024 --streaming True
参数:
--model_path
: 模型路径--model_type=chat
: base/chat--max_input_length=1024
: 最大输入长度--max_generate_length=1024
: 最大输出长度--rope_scaling=None
: 长度外推方法(dynamic/yarn supported now)--rope_factor=8.0
: 外推参数--streaming
: 流式输出输入 clear
可以清空对话历史,输入 exit
终止推理对话。
export PYTHONPATH='./' ; export CUDA_VISIBLE_DEVICES=0 ; streamlit run apps/web_demo.py -- --model_path tigerbot-13b-chat
启动量化模型的web_demo
export PYTHONPATH='./' ; export CUDA_VISIBLE_DEVICES=0 ; streamlit run apps/exllamav2_web_demo.py -- --model_path TigerResearch/tigerbot-70b-chat-v4-4bit-exl2
参数同CLI启动参数
CLI/WebPage均为demo性质。TGI实现了混合batch,request queue等工程特性,如有大量推理需求,推荐通过TGI镜像提供服务。
docker run --gpus '"device=0,1,2,3"' -d -p 8080:80 -v PATH-TO-MODEL-DIR:/model ghcr.io/huggingface/text-generation-inference:1.1.1 --model-id /model --max-total-tokens=1024 --max-input-length=1024 --max-batch-prefill-tokens=1024
请根据模型规模与硬件情况选择合适的参数。一般来说7B/13B需要A100 40G * 1,70B需要A100 * 4。
注意,TGI部署服务,生成控制参数需要在每个请求中控制。
使用exllamav2加载[TigerResearch/tigerbot-70b-chat-v4-4bit-exl2]进行推理,推理速度加快
# 安装exllamav2
git clone https://github.com/turboderp/exllamav2
cd exllamav2
pip install -r requirements.txt
# 启动推理
CUDA_VISIBLE_DEVICES=0 python other_infer/exllamav2_hf_infer.py --model_path ${MODEL_PATH}
MODEL_PATH
为量化模型路径,如 TigerResearch/tigerbot-70b-chat-v4-4bit-exl2
使用以上量化方式,请将transformers、bitsandbytes等包升级到最新版(目前transformers==4.33.1和bitsandbytes==0.41.1可以正常使用)
pip install -U transformers bitsandbytes
此方式为在线量化与推理
CUDA_VISIBLE_DEVICES=0 python other_infer/quant_infer.py --model_path ${MODEL_DIR} --wbit 8
启动训练前安装 DeepSpeed
git clone [email protected]:microsoft/DeepSpeed.git
cd DeepSpeed
rm -rf build
TORCH_CUDA_ARCH_LIST="8.0" DS_BUILD_CPU_ADAM=1 DS_BUILD_UTILS=1 pip install . \
--global-option="build_ext" --global-option="-j8" --no-cache -v \
--disable-pip-version-check 2>&1 | tee build.log
TORCH_CUDA_ARCH_LIST 根据你运行的 GPU 架构做调整,获取 TORCH_CUDA_ARCH_LIST
CUDA_VISIBLE_DEVICES=0 python -c "import torch; print(torch.cuda.get_device_capability())"
如果返回的结果是(8, 0),那么 TORCH_CUDA_ARCH_LIST="8.0"
启动tigerbot-7b
训练至少需要 1 x A100 (40GB), 启动tigerbot-180b
至少需要 16 x A100 (40GB)
deepspeed \
--include="localhost:0,1,2,3" \
./train_clm.py \
--deepspeed ./ds_config/ds_config_zero3.json \
--model_name_or_path TigerResearch/tigerbot-7b-base \
--dataset_name TigerResearch/dev_pretrain \
--do_train \
--output_dir ./ckpt-clm \
--overwrite_output_dir \
--preprocess_num_workers 8 \
--num_train_epochs 5 \
--learning_rate 1e-5 \
--evaluation_strategy steps \
--eval_steps 10 \
--bf16 True \
--save_strategy steps \
--save_steps 10 \
--save_total_limit 2 \
--logging_steps 10 \
--tf32 True \
--per_device_train_batch_size 2 \
--per_device_eval_batch_size 2
deepspeed \
--include="localhost:0,1,2,3" \
./train_sft.py \
--deepspeed ./ds_config/ds_config_zero3.json \
--model_name_or_path TigerResearch/tigerbot-7b-base \
--dataset_name TigerResearch/dev_sft \
--do_train \
--output_dir ./ckpt-sft \
--overwrite_output_dir \
--preprocess_num_workers 8 \
--num_train_epochs 5 \
--learning_rate 1e-5 \
--evaluation_strategy steps \
--eval_steps 10 \
--bf16 True \
--save_strategy steps \
--save_steps 10 \
--save_total_limit 2 \
--logging_steps 10 \
--tf32 True \
--per_device_train_batch_size 2 \
--per_device_eval_batch_size 2
我们使用经典的中英文benchmark自动评测,共13项任务,涵盖代码,常识推理,阅读理解,数学,自然语言理解等。我们基于opencompass建立自动评测体系(感谢@opencompass)
# 安装
cd opencompass
pip install -e .
# 下载数据集到 data/ 处
wget https://github.com/InternLM/opencompass/releases/download/0.1.1/OpenCompassData.zip
unzip OpenCompassData.zip
#运行测评任务:
CUDA_VISIBLE_DEVICES=0,1,2 python run.py configs/eval_tigerbot_13b.py -w outputs/tigerbot-13b-base
总分为各类任务的平均分
chat模型测评结果
base模型测评结果
中文开源预训练集 - 55G,包含中文书籍、中文互联网、中文百科 - 下载 [hugging face]
英文开源预训练集 - 51G,包含英文书籍、英文互联网、英文百科 - 下载 [hugging face]
类型 | 磁盘占用 | 来源 |
---|---|---|
中文书籍 | 12G | 自研 |
中文互联网 | 25G | 自研 |
中文百科 | 19G | 自研 |
英文书籍 | 22G | 开源 |
英文互联网 | 6.9G | 开源 |
英文百科 | 22G | 开源 |
总量 | 106G |
完整预训练数据占比如图所示:
模型中使用的微调数据的搜集思想如下:
a. 从用户指令的自然分布,人工标注总结 10 大类,120 小类任务,例如,事实性问答,开放式创作,语法分析,代码编辑等;
b. self-instruct: 参考 Alpaca self-instruct 方法,扩充中英文 seed_tasks,增加一些中文习惯种子问题,基于此生成 2M 中文(本次开源 0.5M)及 0.1M 英文(本次开源 50k);
c. human-labeling: 基于人工写题及答案、网络搜集方式,整理加工问答集数据,在开源列表中标识为[自研]部分,本次开放部分数据;
d. open-source data cleaning: 基于各类公开数据集转换清洗,其中[自研*]部分,表示基于原始数据进行二次开发后得到,[开源] 部分数据集一般原始数据即为较规整的问答数据,进行简单清洗得到;
e. 总的数据分布符合用户指令自然分布。
a. 过滤类-敏感词规则:基于积累的敏感词库,清洗丢弃涉政、涉黄、涉暴、涉恐等数据项;
b. 过滤类-无效输入输出:此类规则主要针对 Self-Instruct 生成数据缺陷进行专项清理,根据输入输出分别制定规则,以丢弃一些无效的数据项;
无效输入如"<一段文本>",无效输出如"[图画]";
c. 清洗类-关键词规则:根据整理的关键词/正则列表进行数据的替换,包括:清理特殊标志位字符、清理非可见字符、清理标签、繁简转换等;
d. 清洗类-特殊逻辑规则:此类规则用于清洗一些特殊现象数据,如指令与输入重复等,如下所示:
{"instruction": "描述如何做一道红烧肉。请提供食材和详细的步骤。", "input": "请描述如何做一道红烧肉,提供食材和详细步骤。", ...}
类型 | 语言 | 数据集 | 数量 | 来源 |
---|---|---|---|---|
alpaca 中文 | 中文 | tigerbot-alpaca-zh-0.5m | 0.5m | 自研 |
百科问答 | 中文 | tigerbot-wiki-qa-1k | 1k | 自研 |
名著问答 | 中文 | tigerbot-book-qa-1k | 1k | 自研 |
猜谜语 | 中文 | tigerbot-riddle-qa-1k | 1k | 自研 |
阅读理解 | 中文 | tigerbot-superclue-c3-zh-5k | 5k | 自研* |
问答 | 中文 | tigerbot-HC3-zh-12k | 12k | 开源 |
知乎问答 | 中文 | tigerbot-zhihu-zh-10k | 10k | 开源 |
alpaca 英文 | 英文 | tigerbot-alpaca-en-50k | 50k | 自研 |
头脑风暴 | 英文 | tigerbot-dolly-Brainstorming-en-1.7k | 1.7k | 开源 |
分类 | 英文 | tigerbot-dolly-Classification-en-2k | 2k | 开源 | |
代码 | 英文 | tigerbot-kaggle-leetcodesolutions-en-2k | 2k | 自研* |
食谱生成 | 英文 | tigerbot-kaggle-recipes-en-2k | 2k | 开源 |
病历生成 | 英文 | tigerbot-mt-note-generation-en | 450 | 开源 |
多轮对话 | 英文 | tigerbot-OIG-multichat-en-50k | 50k | 自研* |
综合问答 | 英文 | tigerbot-stackexchange-qa-en-0.5m | 0.5m | 开源 |
wiki 问答 | 英文 | tigerbot-wiki-qa-bart-en-10k | 10k | 开源 |
如何做类教程 | 英文 | tigerbot-youtube-howto-en-50k | 50k | 开源 |
总量 | 120W 条 |
更多数据集陆续整理开放中...
类型 | 数量 |
---|---|
金融-研报 | 2W 篇 |
金融-财报 | 2500 篇 |
法律 | 11 类 5.5W 条款 |
百科 | 10W 词条 |
021-63888086