|
--- |
|
license: apache-2.0 |
|
pipeline_tag: text2text-generation |
|
library_name: fasttext |
|
--- |
|
|
|
**只需要700MB就可以运行的模型** |
|
|
|
# 如何判断电脑是否可以运行 |
|
打开B主页,点进去一个视频;如果这个时候你的电脑没有爆炸,就可以运行。 |
|
|
|
# 介绍 |
|
使用了MiniMind2的模型参数: |
|
- Github项目链接在:<a href="https://github.com/jingyaogong/minimind">Github Link</a> |
|
- HuggingFace链接在 <a href="https://huggingface.co/jingyaogong/MiniMind2">Hugging Face</a> |
|
# 快速开始 |
|
安装依赖: |
|
```bash |
|
pip install torch, transformer |
|
``` |
|
|
|
运行模型: |
|
```bash |
|
python model_congnilite.py |
|
``` |
|
|
|
|
|
# 常见问题介绍 |
|
在流式输出中,每输出一个token_id,就将它解码为字符并输出,会造成中文乱码现象,但是将token_id放到一个列表中一起解码就不会出现乱码 |
|
|
|
专业描述:**token边界不对齐导致的解码错误** |
|
|
|
- tokenizer采用的是子词(subword)分词(如BPE、SentencePiece等),一个汉字或词语可能被拆成多个token。 |
|
- 单独解码一个token_id时,tokenizer.decode()会把这个token当作一个完整的单元去还原为字符,但实际上它可能只是一个汉字的“片段”或“字节”,导致输出乱码或不可见字符。 |
|
- 只有把一组token_id(即一个完整的token序列)一起decode,tokenizer才能正确地拼接还原出原始的中文字符。 |
|
|
|
|
|
原本的代码: |
|
```python |
|
new_token_str = tokenizer.decode(next_token_id.item(), skip_special_tokens=False) |
|
print(new_token_str, end='', flush=True) |
|
``` |
|
|
|
更改后: |
|
```python |
|
prev_decoded = tokenizer.decode(token_list[:-1], skip_special_tokens=False) |
|
curr_decoded = tokenizer.decode(token_list, skip_special_tokens=False) |
|
print(curr_decoded[len(prev_decoded):], end='', flush=True) |
|
``` |