readme
Browse files
README.md
ADDED
@@ -0,0 +1,72 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Tiny LLM llama.cpp
|
2 |
+
|
3 |
+
## 1.简介
|
4 |
+
|
5 |
+
本仓库为 [tiny llm 92m]([wdndev/tiny-llm-zh: 从零实现一个小参数量中文大语言模型。 (github.com)](https://github.com/wdndev/tiny-llm-zh)) 量化模型,详细请参考仓库;
|
6 |
+
|
7 |
+
Tiny LLM 92M 模型已支持 llama.cpp C++ 推理框架,建议在 linux 环境下测试,windows效果不好;
|
8 |
+
|
9 |
+
所支持 llama.cpp 为自己修改的版本,仓库链接为: [llama.cpp.tinyllm](https://github.com/wdndev/llama.cpp.tinyllm)
|
10 |
+
|
11 |
+
### 1.1 llama.cpp
|
12 |
+
|
13 |
+
llama.cpp 是一个C++库,用于简化LLM推理的设置。它使得在本地机器上运行Qwen成为可能。该库是一个纯C/C++实现,不依赖任何外部库,并且针对x86架构提供了AVX、AVX2和AVX512加速支持。此外,它还提供了2、3、4、5、6以及8位量化功能,以加快推理速度并减少内存占用。对于大于总VRAM容量的大规模模型,该库还支持CPU+GPU混合推理模式进行部分加速。本质上,llama.cpp的用途在于运行GGUF(由GPT生成的统一格式)模型。
|
14 |
+
|
15 |
+
### 1.2 gguf
|
16 |
+
|
17 |
+
GGUF是指一系列经过特定优化,能够在不同硬件上高效运行的大模型格式。这些模型格式包括但不限于原始格式、exl2、finetuned模型(如axolotl、unsloth等)。每种格式都有其特定的应用场景和优化目标,例如加速模型推理、减少模型大小、提高模型准确性等。
|
18 |
+
|
19 |
+
|
20 |
+
## 2.使用
|
21 |
+
|
22 |
+
### 2.1 准备
|
23 |
+
|
24 |
+
建议使用 linux 系统
|
25 |
+
|
26 |
+
```shell
|
27 |
+
git clone https://github.com/wdndev/llama.cpp.tinyllm
|
28 |
+
cd llama.cpp.tinyllm
|
29 |
+
```
|
30 |
+
|
31 |
+
然后运行 make 命令:
|
32 |
+
|
33 |
+
```shell
|
34 |
+
make
|
35 |
+
```
|
36 |
+
|
37 |
+
然后你就能使用 `llama.cpp` 运行GGUF文件。
|
38 |
+
|
39 |
+
### 2.2 模型转化
|
40 |
+
|
41 |
+
先需要按照如下所示的方式为fp16模型创建一个GGUF文件:
|
42 |
+
|
43 |
+
```shell
|
44 |
+
python convert-hf-to-gguf.py wdndev/tiny_llm_sft_92m --outfile models/tinyllm/tinyllm-92m-fp16.gguf
|
45 |
+
```
|
46 |
+
|
47 |
+
其中,第一个参数指代的是预训练模型所在的路径或者HF模型的名称,第二个参数则指的是想要生成的GGUF文件的路径;在运行命令之前,需要先创建这个目录。
|
48 |
+
|
49 |
+
下面需要根据实际需求将其量化至低比特位。以下是一个将模型量化至4位的具体示例:
|
50 |
+
|
51 |
+
```shell
|
52 |
+
./llama-quantize models/tinyllm/tinyllm-92m-fp16.gguf models/tiny_llm_92m/tinyllm-92m-q4_0.gguf q4_0
|
53 |
+
```
|
54 |
+
|
55 |
+
到现在为止,已经完成了将模型量化为4比特,并将其放入GGUF文件中。这里的 q4_0 表示4比特量化。现在,这个量化后的模型可以直接通过llama.cpp运行。
|
56 |
+
|
57 |
+
### 2.3 推理
|
58 |
+
|
59 |
+
使用如下命令可以运行模型
|
60 |
+
|
61 |
+
```shell
|
62 |
+
./llama-cli -m ./models/tinyllm/tinyllm-92m-fp16.gguf -p "<|system|>\n你是由wdndev开发的个人助手。\n<|user|>\n请介绍一下北京,你好。\n<|assistant|>\n" -n 128 --repeat-penalty 1.2 --top-p 0.8 --top-k 0
|
63 |
+
```
|
64 |
+
|
65 |
+
`-n` 指的是要生成的最大token数量。这里还有其他超参数供你选择,并且你可以运行
|
66 |
+
|
67 |
+
```shell
|
68 |
+
./llama-cli -h
|
69 |
+
```
|
70 |
+
以了解它们
|
71 |
+
|
72 |
+
|