CogniLite / README.md
math-zhu's picture
Update README.md
4b88a4e verified
---
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)
```