模型简介
模型特点
模型能力
使用案例
🚀 MERAK-7B-V2 GGML
MERAK-7B-V2 GGML 是用于特定模型的文件格式,支持 CPU + GPU 推理。这些文件能与多种工具和库兼容,为用户提供了在不同环境下使用模型的便利。
🚀 快速开始
这些文件是 MERAK-7B-V2 的 GGML 格式模型文件。GGML 文件可使用 llama.cpp 以及支持此格式的库和 UI 进行 CPU + GPU 推理,例如:
- KoboldCpp,一个强大的 GGML 网页 UI,开箱即用支持全 GPU 加速,尤其适合讲故事。
- LoLLMS Web UI,一个很棒的网页 UI,通过 c_transformers 后端实现 GPU 加速。
- LM Studio,一个功能齐全的本地 GUI,在 macOS 上支持全 GPU 加速,也支持 Windows,但无 GPU 加速。
- text-generation-webui,最流行的网页 UI,需要额外步骤通过 llama.cpp 后端启用 GPU 加速。
- ctransformers,一个支持 LangChain 且兼容 OpenAI 的 Python 库和 AI 服务器。
- llama-cpp-python,一个兼容 OpenAI API 的 Python 库。
✨ 主要特性
- 多工具兼容:支持多种工具和库进行 CPU + GPU 推理。
- 新量化方法:引入新的 k - quant 量化方法,提高兼容性和性能。
- 低显存运行:借助 QLoRA 技术,可在 16GB VRAM 下运行。
📦 安装指南
环境准备
请确保系统已安装 CUDA 驱动、Python 3.10 和 PyTorch 2。
安装依赖库
在终端中安装以下库:
pip install bitsandbytes==0.39.1
pip install transformers==4.31.0
pip install peft==0.4.0
pip install accelerate==0.20.3
pip install einops==0.6.1 scipy sentencepiece datasets
💻 使用示例
基础用法
使用 BitsandBytes 并在 >= 10GB VRAM GPU 上运行:
import torch
from transformers import AutoTokenizer, AutoConfig, AutoModelForCausalLM, BitsAndBytesConfig, LlamaTokenizer
from peft import PeftModel, PeftConfig
model_id = "Ichsan2895/Merak-7B-v2"
config = AutoConfig.from_pretrained(model_id)
BNB_CONFIG = BitsAndBytesConfig(load_in_4bit=True,
bnb_4bit_compute_dtype=torch.bfloat16,
bnb_4bit_use_double_quant=True,
bnb_4bit_quant_type="nf4",
)
model = AutoModelForCausalLM.from_pretrained(model_id,
quantization_config=BNB_CONFIG,
device_map="auto",
trust_remote_code=True)
tokenizer = LlamaTokenizer.from_pretrained(model_id)
def generate_response(question: str) -> str:
prompt = f"<|prompt|>{question}\n<|answer|>".strip()
encoding = tokenizer(prompt, return_tensors='pt').to("cuda")
with torch.inference_mode():
outputs = model.generate(input_ids=encoding.input_ids,
attention_mask=encoding.attention_mask,
eos_token_id=tokenizer.pad_token_id,
do_sample=False,
num_beams=2,
temperature=0.3,
repetition_penalty=1.2,
max_length=200)
response = tokenizer.decode(outputs[0], skip_special_tokes=True)
assistant_start = "<|answer|>"
response_start = response.find(assistant_start)
return response[response_start + len(assistant_start) :].strip()
prompt = "Siapa penulis naskah proklamasi kemerdekaan Indonesia?"
print(generate_response(prompt))
高级用法
不使用 BitsandBytes 4 位量化以获得更好答案,但需要更高 VRAM:
import torch
from transformers import AutoTokenizer, AutoConfig, AutoModelForCausalLM, BitsAndBytesConfig, LlamaTokenizer
from peft import PeftModel, PeftConfig
model_id = "Ichsan2895/Merak-7B-v2"
config = AutoConfig.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id,
device_map="auto",
trust_remote_code=True)
tokenizer = LlamaTokenizer.from_pretrained(model_id)
def generate_response(question: str) -> str:
prompt = f"<|prompt|>{question}\n<|answer|>".strip()
encoding = tokenizer(prompt, return_tensors='pt').to("cuda")
with torch.inference_mode():
outputs = model.generate(input_ids=encoding.input_ids,
attention_mask=encoding.attention_mask,
eos_token_id=tokenizer.pad_token_id,
do_sample=False,
num_beams=2,
temperature=0.3,
repetition_penalty=1.2,
max_length=200)
response = tokenizer.decode(outputs[0], skip_special_tokes=True)
assistant_start = "<|answer|>"
response_start = response.find(assistant_start)
return response[response_start + len(assistant_start) :].strip()
prompt = "Siapa penulis naskah proklamasi kemerdekaan Indonesia?"
print(generate_response(prompt))
📚 详细文档
兼容性
原始 llama.cpp 量化方法:q4_0, q4_1, q5_0, q5_1, q8_0
这些方法保证与 5 月下旬以来发布的任何 UI、工具和库兼容。由于新的 k - quant 方法逐渐取代它们,这些方法可能很快会被淘汰。
新的 k - quant 方法:q2_K, q3_K_S, q3_K_M, q3_K_L, q4_K_S, q4_K_M, q5_K_S, q6_K
这些新的量化方法自 6 月 6 日提交 2d43387
起与 llama.cpp 兼容。
它们现在也与 text - generation - webui、KoboldCpp、llama - cpp - python、ctransformers、rustformers 等近期版本兼容。对于其他工具和库的兼容性,请查看其文档。
新 k - quant 方法说明
点击查看详情
可用的新方法如下:
- GGML_TYPE_Q2_K - “类型 1” 2 位量化,超级块包含 16 个块,每个块有 16 个权重。块的缩放和最小值用 4 位量化,最终每个权重有效使用 2.5625 位(bpw)。
- GGML_TYPE_Q3_K - “类型 0” 3 位量化,超级块包含 16 个块,每个块有 16 个权重。缩放用 6 位量化,最终使用 3.4375 bpw。
- GGML_TYPE_Q4_K - “类型 1” 4 位量化,超级块包含 8 个块,每个块有 32 个权重。缩放和最小值用 6 位量化,最终使用 4.5 bpw。
- GGML_TYPE_Q5_K - “类型 1” 5 位量化,与 GGML_TYPE_Q4_K 具有相同的超级块结构,最终使用 5.5 bpw。
- GGML_TYPE_Q6_K - “类型 0” 6 位量化,超级块有 16 个块,每个块有 16 个权重。缩放用 8 位量化,最终使用 6.5625 bpw。
- GGML_TYPE_Q8_K - “类型 0” 8 位量化,仅用于量化中间结果。与现有的 Q8_0 的区别在于块大小为 256。所有 2 - 6 位点积都为此量化类型实现。
请参考下面的提供文件表,了解哪些文件使用了哪些方法以及如何使用。
提供的文件
名称 | 量化方法 | 位数 | 使用场景 |
---|---|---|---|
Merak-7B-v2.ggmlv3.q2_K.bin | q2_K | 2 | 新的 k - quant 方法。对注意力层的 vw 和前馈层的 w2 张量使用 GGML_TYPE_Q4_K,对其他张量使用 GGML_TYPE_Q2_K。 |
Merak-7B-v2.ggmlv3.q3_K_L.bin | q3_K_L | 3 | 新的 k - quant 方法。对注意力层的 wv 、wo 和前馈层的 w2 张量使用 GGML_TYPE_Q5_K,其他使用 GGML_TYPE_Q3_K。 |
Merak-7B-v2.ggmlv3.q3_K_M.bin | q3_K_M | 3 | 新的 k - quant 方法。对注意力层的 wv 、wo 和前馈层的 w2 张量使用 GGML_TYPE_Q4_K,其他使用 GGML_TYPE_Q3_K。 |
Merak-7B-v2.ggmlv3.q3_K_S.bin | q3_K_S | 3 | 新的 k - quant 方法。所有张量使用 GGML_TYPE_Q3_K。 |
Merak-7B-v2.ggmlv3.q4_0.bin | q4_0 | 4 | 原始量化方法,4 位。 |
Merak-7B-v2.ggmlv3.q4_1.bin | q4_1 | 4 | 原始量化方法,4 位。比 q4_0 精度高,但不如 q5_0。推理速度比 q5 模型快。 |
Merak-7B-v2.ggmlv3.q4_K_M.bin | q4_K_M | 4 | 新的 k - quant 方法。对一半的注意力层的 wv 和前馈层的 w2 张量使用 GGML_TYPE_Q6_K,其他使用 GGML_TYPE_Q4_K。 |
Merak-7B-v2.ggmlv3.q4_K_S.bin | q4_K_S | 4 | 新的 k - quant 方法。所有张量使用 GGML_TYPE_Q4_K。 |
Merak-7B-v2.ggmlv3.q5_0.bin | q5_0 | 5 | 原始量化方法,5 位。精度更高,资源使用更多,推理速度更慢。 |
Merak-7B-v2.ggmlv3.q5_1.bin | q5_1 | 5 | 原始量化方法,5 位。精度更高,资源使用更多,推理速度更慢。 |
Merak-7B-v2.ggmlv3.q5_K_M.bin | q5_K_M | 5 | 新的 k - quant 方法。对一半的注意力层的 wv 和前馈层的 w2 张量使用 GGML_TYPE_Q6_K,其他使用 GGML_TYPE_Q5_K。 |
Merak-7B-v2.ggmlv3.q5_K_S.bin | q5_K_S | 5 | 新的 k - quant 方法。所有张量使用 GGML_TYPE_Q5_K。 |
Merak-7B-v2.ggmlv3.q6_K.bin | q6_K | 6 | 新的 k - quant 方法。所有张量使用 GGML_TYPE_Q8_K - 6 位量化。 |
lMerak-7B-v2.ggmlv3.q8_0.bin | q8_0 | 8 | 原始量化方法,8 位。几乎与 float16 无区别,资源使用高,速度慢,不建议大多数用户使用。 |
在 text-generation-webui
中运行的说明
更多说明请参考:text-generation-webui/docs/llama.cpp-models.md。
原始模型说明
Merak - 7B 是印度尼西亚语的大语言模型。 此模型基于 Meta Llama - 2 - 7B - Chat - HF,并使用我之前清理过的一些印度尼西亚维基百科文章进行微调。 借助 QLoRA(QLora: Efficient Finetuning of Quantized LLMs),Merak - 7B 能够在 16GB VRAM 下运行。 该模型遵循知识共享署名 - 相同方式共享 - 非商业性使用(CC - BY - SA - NC 4.0)许可,赋能 AI 爱好者和研究人员。
版本更新日志
v1 = 第一个 Merak - 7B 模型。我们选择并清理了约 200k 条印度尼西亚维基百科文章。 v2 = 第一个 Merak - 7B 模型的微调版本。我们再次使用相同的印度尼西亚维基百科文章进行微调,但问题中的提示风格有所改变。
引用信息
@Paper{arXiv,
author = {Touvron, et al},
title = {Llama 2: Open Foundation and Fine-Tuned Chat Models},
journal = {arXiv preprint arXiv:2307.09288},
year = {2023}
}
@ONLINE{wikidump,
author = "Wikimedia Foundation",
title = "Wikimedia Downloads",
url = "https://dumps.wikimedia.org"
}
@inproceedings{wolf-etal-2020-transformers,
title = "Transformers: State-of-the-Art Natural Language Processing",
author = "Thomas Wolf and Lysandre Debut and Victor Sanh and Julien Chaumond and Clement Delangue and Anthony Moi and Pierric Cistac and Tim Rault and Rémi Louf and Morgan Funtowicz and Joe Davison and Sam Shleifer and Patrick von Platen and Clara Ma and Yacine Jernite and Julien Plu and Canwen Xu and Teven Le Scao and Sylvain Gugger and Mariama Drame and Quentin Lhoest and Alexander M. Rush",
booktitle = "Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing: System Demonstrations",
month = oct,
year = "2020",
address = "Online",
publisher = "Association for Computational Linguistics",
url = "https://www.aclweb.org/anthology/2020.emnlp-demos.6",
pages = "38--45"
}
@article{dettmers2023qlora,
title = {QLoRA: Efficient Finetuning of Quantized LLMs},
author = {Dettmers, Tim and Pagnoni, Artidoro and Holtzman, Ari and Zettlemoyer, Luke},
journal = {arXiv preprint arXiv:2305.14314},
year = {2023}
}
🔧 技术细节
- 模型架构:基于 Meta Llama - 2 - 7B - Chat - HF 架构。
- 微调数据:使用清理后的印度尼西亚维基百科文章进行微调。
- 量化技术:采用 QLoRA 技术实现低显存运行。
📄 许可证
本模型遵循知识共享署名 - 相同方式共享 - 非商业性使用(CC - BY - SA - NC 4.0)许可。
信息表格
属性 | 详情 |
---|---|
模型类型 | Llama |
训练数据 | 印度尼西亚维基百科文章 |
许可证 | Creative Commons - By Attribution - Share Alike - Non Commercial (CC - BY - SA - NC 4.0) |



