模型简介
模型特点
模型能力
使用案例
🚀 Dr Samantha 7B - GGUF
Dr Samantha 7B - GGUF 是一个医学领域的语言模型,它结合了医学知识和哲学、心理等方面的理解,能够为用户提供医疗咨询和个人辅导服务。
🚀 快速开始
下载 GGUF 文件
- 自动下载:LM Studio、LoLLMS Web UI、Faraday.dev 等客户端/库会自动下载模型,并提供可用模型列表供您选择。
- 在
text-generation-webui
中下载:在“Download Model”下,输入模型仓库地址TheBloke/Dr_Samantha-7B-GGUF
,并在下方输入要下载的具体文件名,如dr_samantha-7b.Q4_K_M.gguf
,然后点击“Download”。 - 命令行下载:推荐使用
huggingface-hub
Python 库。首先安装:
pip3 install huggingface-hub
然后使用以下命令下载单个模型文件到当前目录:
huggingface-cli download TheBloke/Dr_Samantha-7B-GGUF dr_samantha-7b.Q4_K_M.gguf --local-dir . --local-dir-use-symlinks False
运行模型
在 llama.cpp
中运行
确保使用的是 d0cee0d 或更新版本的 llama.cpp
。示例命令如下:
./main -ngl 35 -m dr_samantha-7b.Q4_K_M.gguf --color -c 2048 --temp 0.7 --repeat_penalty 1.1 -n -1 -p "Below is an instruction that describes a task. Write a response that appropriately completes the request.\n\n### Instruction:\n{prompt}\n\n### Response:"
-ngl 32
:要卸载到 GPU 的层数。如果没有 GPU 加速,请移除该参数。-c 2048
:所需的序列长度。对于扩展序列模型(如 8K、16K、32K),必要的 RoPE 缩放参数会从 GGUF 文件中读取并由 llama.cpp 自动设置。注意,更长的序列长度需要更多资源,因此可能需要减小该值。- 如果想进行聊天式对话,将
-p <PROMPT>
参数替换为-i -ins
。
在 text-generation-webui
中运行
更多说明可在 text-generation-webui 文档中找到:text-generation-webui/docs/04 ‐ Model Tab.md。
从 Python 代码运行
可以使用 llama-cpp-python 或 ctransformers 库从 Python 中使用 GGUF 模型。建议使用 llama-cpp-python。
- 安装包:根据系统运行以下命令之一:
# 无 GPU 加速的基础 ctransformers
pip install llama-cpp-python
# 有 NVidia CUDA 加速
CMAKE_ARGS="-DLLAMA_CUBLAS=on" pip install llama-cpp-python
# 有 OpenBLAS 加速
CMAKE_ARGS="-DLLAMA_BLAS=ON -DLLAMA_BLAS_VENDOR=OpenBLAS" pip install llama-cpp-python
# 有 CLBLast 加速
CMAKE_ARGS="-DLLAMA_CLBLAST=on" pip install llama-cpp-python
# 有 AMD ROCm GPU 加速(仅适用于 Linux)
CMAKE_ARGS="-DLLAMA_HIPBLAS=on" pip install llama-cpp-python
# 有 Metal GPU 加速(仅适用于 macOS 系统)
CMAKE_ARGS="-DLLAMA_METAL=on" pip install llama-cpp-python
# 在 Windows 中,在 PowerShell 中设置 CMAKE_ARGS 变量,例如对于 NVidia CUDA:
$env:CMAKE_ARGS = "-DLLAMA_OPENBLAS=on"
pip install llama-cpp-python
- 简单的 llama-cpp-python 示例代码:
from llama_cpp import Llama
# 设置要卸载到 GPU 的层数。如果系统没有 GPU 加速,设置为 0。
llm = Llama(
model_path="./dr_samantha-7b.Q4_K_M.gguf", # 首先下载模型文件
n_ctx=2048, # 要使用的最大序列长度 - 注意,更长的序列长度需要更多资源
n_threads=8, # 要使用的 CPU 线程数,根据系统和性能进行调整
n_gpu_layers=35 # 如果有 GPU 加速,要卸载到 GPU 的层数
)
# 简单推理示例
output = llm(
"Below is an instruction that describes a task. Write a response that appropriately completes the request.\n\n### Instruction:\n{prompt}\n\n### Response:", # 提示
max_tokens=512, # 生成最多 512 个令牌
stop=["</s>"], # 示例停止令牌 - 不一定适用于此特定模型!使用前请检查。
echo=True # 是否回显提示
)
# 聊天完成 API
llm = Llama(model_path="./dr_samantha-7b.Q4_K_M.gguf", chat_format="llama-2") # 根据使用的模型设置 chat_format
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 与 LangChain 的指南:
✨ 主要特性
- 医学知识丰富:通过准确识别各种症状的潜在原因,展示了广泛的医学知识。
- 强调专业诊断:回复始终强调寻求专业诊断和治疗的重要性。
- 提供实用建议:为某些问题提供咨询专家的建议,并在一些情况下提供症状管理的实用临时措施。
- 富有同理心:始终表现出对患者福祉的同理心、支持和安慰。
- 解释清晰易懂:对病情和治疗方案进行清晰易懂的解释。
- 响应及时全面:及时响应并解决医疗咨询的各个方面。
📦 安装指南
下载依赖库
pip3 install huggingface-hub
加速下载(可选)
pip3 install hf_transfer
设置环境变量:
HF_HUB_ENABLE_HF_TRANSFER=1
💻 使用示例
基础用法
from llama_cpp import Llama
llm = Llama(
model_path="./dr_samantha-7b.Q4_K_M.gguf",
n_ctx=2048,
n_threads=8,
n_gpu_layers=35
)
output = llm(
"Below is an instruction that describes a task. Write a response that appropriately completes the request.\n\n### Instruction:\n{prompt}\n\n### Response:",
max_tokens=512,
stop=["</s>"],
echo=True
)
高级用法
from llama_cpp import Llama
llm = Llama(model_path="./dr_samantha-7b.Q4_K_M.gguf", chat_format="llama-2")
llm.create_chat_completion(
messages = [
{"role": "system", "content": "You are a story writing assistant."},
{
"role": "user",
"content": "Write a story about llamas."
}
]
)
📚 详细文档
关于 GGUF
GGUF 是 llama.cpp 团队在 2023 年 8 月 21 日推出的一种新格式,它取代了不再受 llama.cpp 支持的 GGML。以下是一些已知支持 GGUF 的客户端和库:
- llama.cpp:GGUF 的源项目,提供 CLI 和服务器选项。
- text-generation-webui:最广泛使用的 Web UI,具有许多功能和强大的扩展,支持 GPU 加速。
- KoboldCpp:功能齐全的 Web UI,支持跨所有平台和 GPU 架构的 GPU 加速,特别适合讲故事。
- GPT4All:免费开源的本地运行 GUI,支持 Windows、Linux 和 macOS,具有完整的 GPU 加速。
- LM Studio:易于使用且功能强大的本地 GUI,适用于 Windows 和 macOS(Silicon),支持 GPU 加速。截至 2023 年 11 月 27 日,Linux 版本处于测试阶段。
- LoLLMS Web UI:一个很棒的 Web UI,具有许多有趣和独特的功能,包括一个完整的模型库,便于模型选择。
- Faraday.dev:一个有吸引力且易于使用的基于角色的聊天 GUI,适用于 Windows 和 macOS(Silicon 和 Intel),支持 GPU 加速。
- llama-cpp-python:一个具有 GPU 加速、LangChain 支持和 OpenAI 兼容 API 服务器的 Python 库。
- candle:一个 Rust ML 框架,注重性能,包括 GPU 支持和易用性。
- ctransformers:一个具有 GPU 加速、LangChain 支持和 OpenAI 兼容 AI 服务器的 Python 库。截至 2023 年 11 月 27 日,ctransformers 已有很长时间未更新,不支持许多最新模型。
可用仓库
- 用于 GPU 推理的 AWQ 模型
- 用于 GPU 推理的 GPTQ 模型,具有多种量化参数选项
- 用于 CPU+GPU 推理的 2、3、4、5、6 和 8 位 GGUF 模型
- Sethu Iyer 原始未量化的 fp16 模型(pytorch 格式),用于 GPU 推理和进一步转换
提示模板
Below is an instruction that describes a task. Write a response that appropriately completes the request.
### Instruction:
{prompt}
### Response:
兼容性
这些量化的 GGUFv2 文件与 2023 年 8 月 27 日之后的 llama.cpp 兼容,对应提交 d0cee0d。它们也与许多第三方 UI 和库兼容,请参阅本 README 顶部的列表。
量化方法解释
点击查看详情
新的可用方法如下:
- GGML_TYPE_Q2_K:“type-1” 2 位量化,超级块包含 16 个块,每个块有 16 个权重。块缩放和最小值用 4 位量化。最终每个权重有效使用 2.5625 位(bpw)。
- GGML_TYPE_Q3_K:“type-0” 3 位量化,超级块包含 16 个块,每个块有 16 个权重。缩放用 6 位量化。最终使用 3.4375 bpw。
- GGML_TYPE_Q4_K:“type-1” 4 位量化,超级块包含 8 个块,每个块有 32 个权重。缩放和最小值用 6 位量化。最终使用 4.5 bpw。
- GGML_TYPE_Q5_K:“type-1” 5 位量化。与 GGML_TYPE_Q4_K 具有相同的超级块结构,最终使用 5.5 bpw。
- GGML_TYPE_Q6_K:“type-0” 6 位量化。超级块有 16 个块,每个块有 16 个权重。缩放用 8 位量化。最终使用 6.5625 bpw。
请参考下面的“提供的文件”表,了解哪些文件使用了哪些方法以及如何使用。
提供的文件
名称 | 量化方法 | 位数 | 大小 | 所需最大 RAM | 使用场景 |
---|---|---|---|---|---|
dr_samantha-7b.Q2_K.gguf | Q2_K | 2 | 2.53 GB | 5.03 GB | 质量损失显著 - 不推荐用于大多数情况 |
dr_samantha-7b.Q3_K_S.gguf | Q3_K_S | 3 | 2.95 GB | 5.45 GB | 非常小,质量损失高 |
dr_samantha-7b.Q3_K_M.gguf | Q3_K_M | 3 | 3.30 GB | 5.80 GB | 非常小,质量损失高 |
dr_samantha-7b.Q3_K_L.gguf | Q3_K_L | 3 | 3.60 GB | 6.10 GB | 小,质量损失较大 |
dr_samantha-7b.Q4_0.gguf | Q4_0 | 4 | 3.83 GB | 6.33 GB | 旧版本;小,质量损失非常高 - 建议使用 Q3_K_M |
dr_samantha-7b.Q4_K_S.gguf | Q4_K_S | 4 | 3.86 GB | 6.36 GB | 小,质量损失较大 |
dr_samantha-7b.Q4_K_M.gguf | Q4_K_M | 4 | 4.08 GB | 6.58 GB | 中等,质量平衡 - 推荐 |
dr_samantha-7b.Q5_0.gguf | Q5_0 | 5 | 4.65 GB | 7.15 GB | 旧版本;中等,质量平衡 - 建议使用 Q4_K_M |
dr_samantha-7b.Q5_K_S.gguf | Q5_K_S | 5 | 4.65 GB | 7.15 GB | 大,质量损失低 - 推荐 |
dr_samantha-7b.Q5_K_M.gguf | Q5_K_M | 5 | 4.78 GB | 7.28 GB | 大,质量损失非常低 - 推荐 |
dr_samantha-7b.Q6_K.gguf | Q6_K | 6 | 5.53 GB | 8.03 GB | 非常大,质量损失极低 |
dr_samantha-7b.Q8_0.gguf | Q8_0 | 8 | 7.16 GB | 9.66 GB | 非常大,质量损失极低 - 不推荐 |
注意:上述 RAM 数字假设没有 GPU 卸载。如果将层卸载到 GPU,这将减少 RAM 使用并使用 VRAM 代替。
原始模型信息
概述
Dr. Samantha 是一个语言模型,通过 mergekit 将 Severus27/BeingWell_llama2_7b
和 ParthasarathyShanmugam/llama-2-7b-samantha
合并而成。它具备专注于医学知识的能力(在 USMLE 数据库和医患互动数据上训练),同时拥有 Samantha-7b 模型的哲学、心理和关系理解能力。作为医疗顾问和个人辅导员,Dr.Samantha 可以有效地支持身体和心理健康,这对于整体健康护理非常重要。
Yaml 配置
slices:
- sources:
- model: Severus27/BeingWell_llama2_7b
layer_range: [0, 32]
- model: ParthasarathyShanmugam/llama-2-7b-samantha
layer_range: [0, 32]
merge_method: slerp
base_model: TinyPixel/Llama-2-7B-bf16-sharded
parameters:
t:
- filter: self_attn
value: [0, 0.5, 0.3, 0.7, 1]
- filter: mlp
value: [1, 0.5, 0.7, 0.3, 0]
- value: 0.5 # fallback for rest of tensors
tokenizer_source: union
dtype: bfloat16
提示模板
Below is an instruction that describes a task. Write a response that appropriately completes the request.
### Instruction:
What is your name?
### Response:
My name is Samantha.
OpenLLM 排行榜性能
T | 模型 | 平均 | ARC | Hellaswag | MMLU | TruthfulQA | Winogrande | GSM8K |
---|---|---|---|---|---|---|---|---|
1 | sethuiyer/Dr_Samantha-7b | 52.95 | 53.84 | 77.95 | 47.94 | 45.58 | 73.56 | 18.8 |
2 | togethercomputer/LLaMA-2-7B-32K-Instruct | 50.02 | 51.11 | 78.51 | 46.11 | 44.86 | 73.88 | 5.69 |
3 | togethercomputer/LLaMA-2-7B-32K | 47.07 | 47.53 | 76.14 | 43.33 | 39.23 | 71.9 | 4.32 |
按学科的准确率
学科 | 准确率 (%) |
---|---|
临床知识 | 52.83 |
医学遗传学 | 49.00 |
人类衰老 | 58.29 |
人类性行为 | 55.73 |
大学医学 | 38.73 |
解剖学 | 41.48 |
大学生物学 | 52.08 |
大学医学 | 38.73 |
高中生物学 | 53.23 |
专业医学 | 38.73 |
营养学 | 50.33 |
专业心理学 | 46.57 |
病毒学 | 41.57 |
高中心理学 | 66.60 |
平均 | 48.85% |
GPT-4 对 ChatDoctor-200k 数据集中 25 个随机提示的评估
总体评分:83.5/100
优点
- 通过准确识别各种症状的潜在原因,展示了广泛的医学知识。
- 回复始终强调寻求专业诊断和治疗的重要性。
- 针对某些问题建议咨询专家,理由充分。
- 在一些情况下提供了症状管理的实用临时措施。
- 始终表现出对患者福祉的同理心、支持和安慰。
- 对病情和治疗方案进行清晰易懂的解释。
- 及时响应并解决医疗咨询的各个方面。
缺点
- 偶尔在症状表明可能是紧急情况时,没有更加强调紧迫性。
- 对鉴别诊断的讨论可以探索更广泛的不太常见的原因。
- 有时对不太常见症状及其影响的细节需要更深入。
- 有机会通过后续问题收集更多关于症状历史的澄清细节。
- 在相关情况下,可以考虑探索完整的病史以改善诊断背景。
- 可以更加强调与某些疾病相关的谨慎程度和风险因素。
🔧 技术细节
模型结构
Dr. Samantha 是通过将 Severus27/BeingWell_llama2_7b
和 ParthasarathyShanmugam/llama-2-7b-samantha
合并而成,使用了 mergekit 工具。具体的合并配置如下:
slices:
- sources:
- model: Severus27/BeingWell_llama2_7b
layer_range: [0, 32]
- model: ParthasarathyShanmugam/llama-2-7b-samantha
layer_range: [0, 32]
merge_method: slerp
base_model: TinyPixel/Llama-2-7B-bf16-sharded
parameters:
t:
- filter: self_attn
value: [0, 0.5, 0.3, 0.7, 1]
- filter: mlp
value: [1, 0.5, 0.7, 0.3, 0]
- value: 0.5 # fallback for rest of tensors
tokenizer_source: union
dtype: bfloat16
量化方法
使用了多种量化方法,如 GGML_TYPE_Q2_K、GGML_TYPE_Q3_K 等,不同的量化方法在位数、大小和质量损失等方面有所不同。具体信息请参考“提供的文件”部分。
📄 许可证
该模型遵循 llama2 许可证。
信息表格
属性 | 详情 |
---|---|
模型类型 | llama |
训练数据 | GBaker/MedQA-USMLE-4-options、cognitivecomputations/samantha-data、shibing624/medical |
模型创建者 | Sethu Iyer |
许可证 | llama2 |
支持语言 | 英语、中文 |
库名称 | transformers |
提示模板 | Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: {prompt} ### Response: |
量化者 | TheBloke |
标签 | llama、merge、medical |
常用提示信息
⚠️ 重要提示
手动下载者几乎不需要克隆整个仓库!提供了多种不同的量化格式,大多数用户只需要选择并下载单个文件。
💡 使用建议
在使用模型时,根据自己的硬件资源选择合适的量化文件和参数设置。如果有 GPU 加速,建议将部分层卸载到 GPU 以提高性能。同时,注意更长的序列长度需要更多的资源,可能需要根据实际情况进行调整。



