Update README.md
Browse files
README.md
CHANGED
|
@@ -1,38 +1,49 @@
|
|
| 1 |
-
|
| 2 |
-
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
|
| 36 |
-
|
| 37 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 38 |
```
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: apache-2.0
|
| 3 |
+
pipeline_tag: text2text-generation
|
| 4 |
+
library_name: fasttext
|
| 5 |
+
---
|
| 6 |
+
|
| 7 |
+
**只需要700MB就可以运行的模型**
|
| 8 |
+
|
| 9 |
+
# 如何判断电脑是否可以运行
|
| 10 |
+
打开B主页,点进去一个视频;如果这个时候你的电脑没有爆炸,就可以运行。
|
| 11 |
+
|
| 12 |
+
# 介绍
|
| 13 |
+
使用了MiniMind2的模型参数:
|
| 14 |
+
- Github项目链接在:<a href="https://github.com/jingyaogong/minimind">Github Link</a>
|
| 15 |
+
- HuggingFace链接在 <a href="https://huggingface.co/jingyaogong/MiniMind2">Hugging Face</a>
|
| 16 |
+
# 快速开始
|
| 17 |
+
安装依赖:
|
| 18 |
+
```bash
|
| 19 |
+
pip install torch, transformer
|
| 20 |
+
```
|
| 21 |
+
|
| 22 |
+
运行模型:
|
| 23 |
+
```bash
|
| 24 |
+
python model_congnilite.py
|
| 25 |
+
```
|
| 26 |
+
|
| 27 |
+
|
| 28 |
+
# 常见问题介绍
|
| 29 |
+
在流式输出中,每输出一个token_id,就将它解码为字符并输出,会造成中文乱码现象,但是将token_id放到一个列表中一起解码就不会出现乱码
|
| 30 |
+
|
| 31 |
+
专业描述:**token边界不对齐导致的解码错误**
|
| 32 |
+
|
| 33 |
+
- tokenizer采用的是子词(subword)分词(如BPE、SentencePiece等),一个汉字或词语可能被拆成多个token。
|
| 34 |
+
- 单独解码一个token_id时,tokenizer.decode()会把这个token当作一个完整的单元去还原为字符,但实际上它可能只是一个汉字的“片段”或“字节”,导致输出乱码或不可见字符。
|
| 35 |
+
- 只有把一组token_id(即一个完整的token序列)一起decode,tokenizer才能正确地拼接还原出原始的中文字符。
|
| 36 |
+
|
| 37 |
+
|
| 38 |
+
原本的代码:
|
| 39 |
+
```python
|
| 40 |
+
new_token_str = tokenizer.decode(next_token_id.item(), skip_special_tokens=False)
|
| 41 |
+
print(new_token_str, end='', flush=True)
|
| 42 |
+
```
|
| 43 |
+
|
| 44 |
+
更改后:
|
| 45 |
+
```python
|
| 46 |
+
prev_decoded = tokenizer.decode(token_list[:-1], skip_special_tokens=False)
|
| 47 |
+
curr_decoded = tokenizer.decode(token_list, skip_special_tokens=False)
|
| 48 |
+
print(curr_decoded[len(prev_decoded):], end='', flush=True)
|
| 49 |
```
|