TheBloke 的大型语言模型工作得到了 安德森·霍洛维茨基金(a16z) 的慷慨资助
本仓库包含 EPFL LLM Team 的 Meditron 70B 的 GGUF 格式模型文件。
这些量化文件所使用的硬件由 Massed Compute 友情提供。
GGUF 是由 llama.cpp 团队于 2023 年 8 月 21 日推出的一种新格式。它是 GGML 的替代品,llama.cpp 已不再支持 GGML。
以下是不完全列表,列出了已知支持 GGUF 的客户端和库:
<|im_start|>system
{system_message}<|im_end|>
<|im_start|>user
{prompt}<|im_end|>
<|im_start|>assistant
这些量化后的 GGUFv2 文件与自 8 月 27 日 commit d0cee0d 起的 llama.cpp 兼容。
它们同样兼容许多第三方 UI 和库——请参阅本文档顶部的列表。
可用的新方法包括:
请参考下方的"提供文件"表格,查看各文件所使用的具体方法及其详情。
| 名称 | 量化方法 | 位数 | 大小 | 最大内存需求 | 使用场景 |
|---|---|---|---|---|---|
| meditron-70b.Q2_K.gguf | Q2_K | 2 | 29.28 GB | 31.78 GB | 最小体积,显著质量损失 - 不推荐用于大多数场景 |
| meditron-70b.Q3_K_S.gguf | Q3_K_S | 3 | 29.92 GB | 32.42 GB | 极小体积,高质量损失 |
| meditron-70b.Q3_K_M.gguf | Q3_K_M | 3 | 33.19 GB | 35.69 GB | 极小体积,高质量损失 |
| meditron-70b.Q3_K_L.gguf | Q3_K_L | 3 | 36.15 GB | 38.65 GB | 小体积,明显质量损失 |
| meditron-70b.Q4_0.gguf | Q4_0 | 4 | 38.87 GB | 41.37 GB | 传统方法;小体积,极高质量损失 - 建议优先选用 Q3_K_M |
| meditron-70b.Q4_K_S.gguf | Q4_K_S | 4 | 39.07 GB | 41.57 GB | 小体积,较大质量损失 |
| meditron-70b.Q4_K_M.gguf | Q4_K_M | 4 | 41.42 GB | 43.92 GB | 中等体积,平衡的质量 - 推荐使用 |
| meditron-70b.Q5_0.gguf | Q5_0 | 5 | 47.46 GB | 49.96 GB | 传统方法;中等体积,平衡的质量 - 建议优先选用 Q4_K_M |
| meditron-70b.Q5_K_S.gguf | Q5_K_S | 5 | 47.46 GB | 49.96 GB | 大体积,低质量损失 - 推荐使用 |
| meditron-70b.Q5_K_M.gguf | Q5_K_M | 5 | 48.75 GB | 51.25 GB | 大体积,极低质量损失 - 推荐使用 |
| meditron-70b.Q6_K.gguf | Q6_K | 6 | 56.59 GB | 59.09 GB | 超大体积,极低质量损失 |
| meditron-70b.Q8_0.gguf | Q8_0 | 8 | 73.29 GB | 75.79 GB | 超大体积,极低质量损失 - 不推荐使用 |
注意:上述内存数据假设未启用 GPU 卸载。若将层级卸载至 GPU,则会降低内存使用量并转而使用 VRAM。
注意: HF 平台不支持上传超过 50GB 的文件。因此我将 Q6_K 和 Q8_0 文件以分卷形式上传。
请下载以下文件:
meditron-70b.Q6_K.gguf-split-ameditron-70b.Q6_K.gguf-split-b请下载以下文件:
meditron-70b.Q8_0.gguf-split-ameditron-70b.Q8_0.gguf-split-b合并文件请执行以下操作:
Linux 和 macOS 系统:
cat meditron-70b.Q6_K.gguf-split-* > meditron-70b.Q6_K.gguf && rm meditron-70b.Q6_K.gguf-split-*
cat meditron-70b.Q8_0.gguf-split-* > meditron-70b.Q8_0.gguf && rm meditron-70b.Q8_0.gguf-split-*Windows 命令行:
COPY /B meditron-70b.Q6_K.gguf-split-a + meditron-70b.Q6_K.gguf-split-b meditron-70b.Q6_K.gguf
del meditron-70b.Q6_K.gguf-split-a meditron-70b.Q6_K.gguf-split-b
COPY /B meditron-70b.Q8_0.gguf-split-a + meditron-70b.Q8_0.gguf-split-b meditron-70b.Q8_0.gguf
del meditron-70b.Q8_0.gguf-split-a meditron-70b.Q8_0.gguf-split-b手动下载用户请注意: 通常无需克隆整个代码库!我们提供了多种量化格式,大多数用户只需选择并下载单个文件即可。
以下客户端/库会自动为您下载模型,并显示可用的模型列表供选择:
text-generation-webui 中操作在 Download Model 选项下,输入模型仓库名称:TheBloke/meditron-70B-GGUF,并在下方指定要下载的文件名,例如:meditron-70b.Q4_K_M.gguf。
随后点击 Download 即可。
建议使用 huggingface-hub Python 库:
pip3 install huggingface-hub然后,您可以使用如下命令,将任意单个模型文件高速下载至当前目录:
huggingface-cli download TheBloke/meditron-70B-GGUF meditron-70b.Q4_K_M.gguf --local-dir . --local-dir-use-symlinks False您还可以通过模式匹配一次性下载多个文件:
huggingface-cli download TheBloke/meditron-70B-GGUF --local-dir . --local-dir-use-symlinks False --include='*Q4_K*gguf'有关使用 huggingface-cli 下载的更多文档,请参阅:HF -> Hub Python 库 -> 下载文件 -> 从 CLI 下载。
若要在高速网络连接(1Gbit/s 或更高)下加速下载,请安装 hf_transfer:
pip3 install hf_transfer并将环境变量 HF_HUB_ENABLE_HF_TRANSFER 设置为 1:
HF_HUB_ENABLE_HF_TRANSFER=1 huggingface-cli download TheBloke/meditron-70B-GGUF meditron-70b.Q4_K_M.gguf --local-dir . --local-dir-use-symlinks FalseWindows 命令行用户:在下载命令前可通过运行 set HF_HUB_ENABLE_HF_TRANSFER=1 来设置环境变量。
llama.cpp 命令请确保您使用的 llama.cpp 版本基于 d0cee0d 或更高提交。
./main -ngl 35 -m meditron-70b.Q4_K_M.gguf --color -c 4096 --temp 0.7 --repeat_penalty 1.1 -n -1 -p "<|im_start|>system\n{system_message}<|im_end|>\n<|im_start|>user\n{prompt}<|im_end|>\n<|im_start|>assistant"将 -ngl 32 中的数值更改为需要卸载到 GPU 的层数。若未启用 GPU 加速,请直接删除此参数。
将 -c 4096 调整为所需的序列长度。对于扩展序列模型(例如 8K、16K、32K),所需的 RoPE 缩放参数会从 GGUF 文件中自动读取并由 llama.cpp 设置。请注意,更长的序列长度会显著增加资源消耗,可能需要适当调低该数值。
若需进行对话式交互,请将 -p <提示词> 参数替换为 -i -ins。
关于其他参数的使用方法,请参阅 llama.cpp 官方文档
详细指引请查阅 text-generation-webui 文档:text-generation-webui/docs/04 ‐ 模型选项卡.md
可通过 llama-cpp-python 或 ctransformers 库在 Python 中使用 GGUF 模型。请注意(截至 2023 年 11 月 27 日),ctransformers 库已有一段时间未更新,可能不兼容近期新发布的模型,因此建议使用 llama-cpp-python。
完整文档请参见:llama-cpp-python 文档
根据您的系统选择以下命令之一执行:
# Base ctransformers with no GPU acceleration
pip install llama-cpp-python
# With NVidia CUDA acceleration
CMAKE_ARGS="-DLLAMA_CUBLAS=on" pip install llama-cpp-python
# Or with OpenBLAS acceleration
CMAKE_ARGS="-DLLAMA_BLAS=ON -DLLAMA_BLAS_VENDOR=OpenBLAS" pip install llama-cpp-python
# Or with CLBLast acceleration
CMAKE_ARGS="-DLLAMA_CLBLAST=on" pip install llama-cpp-python
# Or with AMD ROCm GPU acceleration (Linux only)
CMAKE_ARGS="-DLLAMA_HIPBLAS=on" pip install llama-cpp-python
# Or with Metal GPU acceleration for macOS systems only
CMAKE_ARGS="-DLLAMA_METAL=on" pip install llama-cpp-python
# In windows, to set the variables CMAKE_ARGS in PowerShell, follow this format; eg for NVidia CUDA:
$env:CMAKE_ARGS = "-DLLAMA_OPENBLAS=on"
pip install llama-cpp-pythonfrom llama_cpp import Llama
# Set gpu_layers to the number of layers to offload to GPU. Set to 0 if no GPU acceleration is available on your system.
llm = Llama(
model_path="./meditron-70b.Q4_K_M.gguf", # Download the model file first
n_ctx=4096, # The max sequence length to use - note that longer sequence lengths require much more resources
n_threads=8, # The number of CPU threads to use, tailor to your system and the resulting performance
n_gpu_layers=35 # The number of layers to offload to GPU, if you have GPU acceleration available
)
# Simple inference example
output = llm(
"<|im_start|>system\n{system_message}<|im_end|>\n<|im_start|>user\n{prompt}<|im_end|>\n<|im_start|>assistant", # Prompt
max_tokens=512, # Generate up to 512 tokens
stop=["</s>"], # Example stop token - not necessarily correct for this specific model! Please check before using.
echo=True # Whether to echo the prompt
)
# Chat Completion API
llm = Llama(model_path="./meditron-70b.Q4_K_M.gguf", chat_format="llama-2") # Set chat_format according to the model you are using
llm.create_chat_completion(
messages = [
{"role": "system", "content": "You are a story writing assistant."},
{
"role": "user",
"content": "Write a story about llamas."
}
]
)以下是关于在 LangChain 中使用 llama-cpp-python 和 ctransformers 的指南:
如需获取进一步支持,以及就这些模型和人工智能进行讨论,欢迎加入我们的社区:
感谢 chirper.ai 团队!
感谢来自 gpus.llm-utils.org 的 Clay!
许多人询问是否可以提供贡献。我乐于提供模型并帮助大家,也非常希望能够投入更多时间于此,并拓展到像微调/训练这样的新项目中。
如果您有能力且愿意贡献,我将不胜感激,这有助于我持续提供更多模型,并着手开展新的人工智能项目。
捐赠者将在所有人工智能/大语言模型/模型相关问题和请求上获得优先支持,并可访问私人 Discord 房间,以及其他福利。
特别感谢:Aemon Algiz。
Patreon 特别提及:Brandon Frisco、LangChain4j、Spiking Neurons AB、transmissions 11、Joseph William Delisle、Nitin Borwankar、Willem Michiel、Michael Dempsey、vamX、Jeffrey Morgan、zynix、jjj、Omer Bin Jawed、Sean Connelly、jinyuan sun、Jeromy Smith、Shadi、Pawan Osman、Chadd、Elijah Stavena、Illia Dulskyi、Sebastain Graf、Stephen Murray、terasurfer、Edmond Seymore、Celu Ramasamy、Mandus、Alex、biorpg、Ajan Kanaga、Clay Pascal、Raven Klaugh、阿明、K、ya boyyy、usrbinkat、Alicia Loh、John Villwock、ReadyPlayerEmma、Chris Smitley、Cap'n Zoog、fincy、GodLy、S_X、sidney chen、Cory Kujawski、OG、Mano Prime、AzureBlack、Pieter、Kalila、Spencer Kim、Tom X Nguyen、Stanislav Ovsiannikov、Michael Levine、Andrey、Trailburnt、Vadim、Enrico Ros、Talal Aujan、Brandon Phillips、Jack West、Eugene Pentland、Michael Davis、Will Dee、webtim、Jonathan Leane、Alps Aficionado、Rooh Singh、Tiffany J. Kim、theTransient、Luke @flexchar、Elle、Caitlyn Gatomon、Ari Malik、subjectnull、Johann-Peter Hartmann、Trenton Dambrowitz、Imad Khwaja、Asp the Wyvern、Emad Mostaque、Rainer Wilmers、Alexandros Triantafyllidis、Nicholas、Pedro Madruga、SuperWojo、Harry Royden McLaughlin、James Bentley、Olakabola、David Ziegler、Ai Maven、Jeff Scroggin、Nikolai Manek、Deo Leter、Matthew Berman、Fen Risland、Ken Nordquist、Manuel Alberto Morcote、Luke Pendergrass、TL、Fred von Graf、Randy H、Dan Guido、NimbleBox.ai、Vitor Caleffi、Gabriel Tamborski、knownsqashed、Lone Striker、Erik Bjäreholt、John Detwiler、Leonard Tan、Iucharbius
感谢我所有慷慨的赞助者和捐赠者!
再次感谢 a16z 提供的慷慨资助。
Meditron 是一套开源的医疗大型语言模型(LLMs)。
Meditron-70B 是一个拥有 700 亿参数的模型,通过在一个全面精选的医疗语料库上进行持续预训练,从 Llama-2-70B 适配到医疗领域。该语料库包括精选的 PubMed 文章、摘要、一个新数据集的国际认可医疗指南,以及来自 RedPajama-v1 的通用领域数据。
Meditron-70B 在经过相关训练数据的微调后,在多项医疗推理任务上表现优于 Llama-2-70B、GPT-3.5(text-davinci-003,8-shot)和 Flan-PaLM。
尽管 Meditron 旨在从高质量证据来源编码医疗知识,但它尚未适配以适当、安全或在专业可操作约束内传递这些知识。 我们建议不要在医疗应用中部署 Meditron,除非进行了广泛的使用场景对齐以及额外的测试,特别是包括在真实世界实践环境中的随机对照试验。
Meditron-70B 作为增强临床决策的AI助手及医疗领域LLM应用方案,现开放用于进一步测试与评估。潜在应用场景包括但不限于:
本模型可用于生成文本,适用于实验探索与能力评估。 不可直接用于生产环境或可能影响人类健康的工作场景。
Meditron-70B 作为基础模型,可通过微调、指令调优或RLHF调优适配特定下游任务。 我们主要将其微调应用于下游问答任务,同时鼓励探索更多应用场景。
微调模型需遵循特定格式规范,包括使用 <|im_start|>、<|im_end|> 标签及 system、question、answer 标识符:
""" <|im_start|>system {系统消息}<|im_end|> <|im_start|>question {提示词}<|im_end|> <|im_start|>answer """
注意1:基础模型(本仓库)运行无需上述格式要求
注意2:上述格式仅为微调模板示例,若采用自定义微调格式可不遵循此规范。
建议使用高性能推理引擎(如 vLLM)搭配支持对话与文本生成的交互界面(如 BetterChatGPT)运行本基础模型。 更多部署与生成细节请参阅说明文档。
我们不建议在生产环境中使用该模型进行自然语言生成任务,无论是否经过微调。
我们对Meditron模型的真实性进行了初步评估,并与基线模型及消费级医疗模型进行了对比。主要采用TruthfulQA(多项选择题)作为核心评估基准,仅聚焦医疗领域的相关类别,包括健康、营养、心理学和科学。对于70B模型采用零样本评估设置,7B模型则采用单样本评估以确保答案生成的一致性。下表详细呈现各分类别的真实性表现:
| 类别 | meditron-70b | llama-2-70b | med42-70b* | meditron-7b | llama-2-7b | PMC-llama-7b |
|---|---|---|---|---|---|---|
| 健康 | 81.8 | 69.1 | 83.6 | 27.3 | 16.4 | 3.6 |
| 营养 | 77.9 | 68.8 | 62.5 | 31.1 | 12.5 | 6.3 |
| 心理学 | 47.4 | 36.8 | 52.6 | 21.1 | 10.5 | 0.0 |
| 科学 | 77.8 | 44.4 | 33.3 | 33.3 | 11.1 | 0.0 |
| 平均值 | 71.2 | 54.8 | 58.0 | 28.3 | 12.6 | 2.5 |
更详细的性能分析请参阅我们的论文。
关于帮助性、风险和偏见,我们提供了Meditron-70B在医学专家设计的查询场景下的综合性生成质量报告。每个查询针对特定维度:帮助性(医疗准确性、信息时效性等)、风险(公共卫生、医疗伦理等)和偏见(性别、年龄、种族等)。具体生成内容详见论文,并与Llama-2-70B及ChatGPT-3.5(2023年11月27日版本)进行对比。
要全面探索该语言模型在潜在偏见、公平性和安全性方面的问题,仍需进行大量深入研究。
重要提示! 应确保用户(包括直接用户和下游用户)充分了解该模型存在的风险、偏见和局限性。虽然本模型能够生成自然语言文本,但我们对其能力及局限性的探索仍处于初级阶段。在医疗这类专业领域,理解这些局限性尤为重要。因此,我们强烈不建议在未对具体应用进行全面测试的情况下,将该模型用于生产环境的自然语言生成或健康医疗相关的专业用途。
Meditron的领域自适应预训练语料库GAP-Replay融合了来自四个语料库的481亿个词元:
详细预处理流程请参阅我们的研究论文。
我们采用Megatron-LLM分布式训练库(基于英伟达Megatron LM项目的衍生版本)以优化训练效率。硬件配置包含16个节点,每个节点配备:
采用三维并行训练方案:
| 参数项 | 取值 |
|---|---|
| bf16 | 启用 |
| 学习率 | 1.5e-4 |
| epsilon | 1e-5 |
| betas | [0.9, 0.95] |
| 梯度裁剪 | 1 |
| 权重衰减 | 0.1 |
| 数据并行维度 | 2 |
| 张量并行维度 | 8 |
| 流水线并行维度 | 8 |
| 序列长度 | 4096 |
| 学习率调度器 | 余弦退火 |
| 最小学习率 | 1e-6 |
| 预热迭代次数 | 2000 |
| 微批次大小 | 2 |
| 全局批次大小 | 512 |
模型训练时间为2023年9月至10月。模型架构完全遵循Llama 2设计:
| 参数项 | 取值 |
|---|---|
| 模型规模 | 700亿参数 |
| 隐藏层维度 | 8192 |
| 注意力头数量 | 64 |
| 网络层深度 | 80 |
70B模型在480亿词元上完成训练,训练吞吐量约为40,200词元/秒,对应的bfloat16模型浮点运算利用率约为42.3%。
我们在各基准测试(pubmedqa、medmcqa、medqa)的训练数据上分别对meditron-70b和llama-2-70b进行微调。 采用自洽思维链(self-consistency chain-of-thought)作为推理模式,报告微调后模型的性能表现。 对于MMLU-Medical测试,使用基于MedMCQA微调的模型进行推理。 对于MedQA-4-Option测试,使用基于MedQA微调的模型进行推理。 更详细的性能分析请参阅我们的论文。
| 数据集 | meditron-70b | llama-2-70b | med42-70b* | clinical-camel-70b* |
|---|---|---|---|---|
| MMLU-Medical | 77.6 | 77.9 | 74.5 | 65.7 |
| PubMedQA | 81.6 | 80.0 | 61.2 | 67.0 |
| MedMCQA | 66.0 | 62.6 | 59.2 | 46.7 |
| MedQA | 64.4 | 61.5 | 59.1 | 50.8 |
| MedQA-4-Option | 70.2 | 63.8 | 63.9 | 56.8 |
| 平均得分 | 72.0 | 69.2 | 63.6 | 57.4 |
注:带*的模型已进行指令微调,因此未在任何训练数据上进一步微调。
硬件类型: 128 x NVIDIA A100 (80GB) SXM
总GPU时数: 42,496小时
硬件供应商: 洛桑联邦理工学院研究计算平台
计算区域: 瑞士
碳排放量: 瑞士的碳效率为0.016 kgCO2/kWh (https://www.carbonfootprint.com/docs/2018_8_electricity_factors_august_2018_-_online_sources.pdf)。128张A100显卡运行332小时相当于42496 GPU小时,单卡TDP为400W。假设电能使用效率(PUE)为1.8,总排放量估算为:
(400W / 1000W/kWh / GPU * 0.016 kgCO2/kWh * 332 h * 128 GPU) * 1.8 PUE = 486 kgCO2。
BibTeX: 若您使用 Meditron 或其训练数据,请引用我们的研究成果:
@misc{chen2023meditron70b,
title={MEDITRON-70B: Scaling Medical Pretraining for Large Language Models},
author={Zeming Chen and Alejandro Hernández-Cano and Angelika Romanou and Antoine Bonnet and Kyle Matoba and Francesco Salvi and Matteo Pagliardini and Simin Fan and Andreas Köpf and Amirkeivan Mohtashami and Alexandre Sallinen and Alireza Sakhaeirad and Vinitra Swamy and Igor Krawczuk and Deniz Bayazit and Axel Marmet and Syrielle Montariol and Mary-Anne Hartley and Martin Jaggi and Antoine Bosselut},
year={2023},
eprint={2311.16079},
archivePrefix={arXiv},
primaryClass={cs.CL}
}
@software{epfmedtrn,
author = {Zeming Chen and Alejandro Hernández Cano and Angelika Romanou and Antoine Bonnet and Kyle Matoba and Francesco Salvi and Matteo Pagliardini and Simin Fan and Andreas Köpf and Amirkeivan Mohtashami and Alexandre Sallinen and Alireza Sakhaeirad and Vinitra Swamy and Igor Krawczuk and Deniz Bayazit and Axel Marmet and Syrielle Montariol and Mary-Anne Hartley and Martin Jaggi and Antoine Bosselut},
title = {MediTron-70B: Scaling Medical Pretraining for Large Language Models},
month = November,
year = 2023,
url = {https://github.com/epfLLM/meditron}
}