转码学习day7

今天刷三题力扣,然后开始做项目,顺便温习一下MHA代码,尽可能可以默写。

lc:24、25、543

默写还是差了一点,很多时候传参记不清楚。

尝试了调用hugging face的api和学习本地调用下载好的大模型推理

tokenizer = AutoTokenizer.from_pretrained(model_dir) model = AutoModelForCausalLM.from_pretrained(model_dir),之前做minimind的部署预训练和SFT的时候,没有用huggingface,而是直接git下来,调整了一下数据集预训练。

pipeline直接把之前的推理代码封装好了,有点太方便了。

直接输出的话其实效果很糟糕,小模型复读情况严重。

得多加一点参数限制,能稍微看起来不那么口吃。

max_length=50,num_return_sequences=1,truncation=True,temperature*=0.7,top_p=0.9,top_k=50,clean_up_tokenization_spaces=True 输出中文时一般行业通用规则是后处理去掉字之间空格,我猜是英文一个单词中间就一个空格,如果模型要兼容象形和楔形,都采用一个token一个空格,然后针对不需要空格的语言在输出的时候再去掉空格即可。

temperature是在logits归一化之前放大差距,一般需要大于0.5,无限接近0是没有意义的。

top-p关注的是累计概率,只允许在“累计概率 ≥ p 的最小 token 集合”里采样。1-3,3个token,

p1 p1 + p2 p1 + p2 + p3 …,直到p1~px相加大于top-p,在这些token里采样。

top-p动态上限,top-k写多少就多少。

这俩可以一起用,取min(top-k,top-p-nums)。

中文的tokenizer比较特殊,比如说黄 ##黄是不一样的东西,有的时候可以单独一个字有含义,有的时候是词语一个含义,所以一个字分成两种分词结构来训练。

今天的内容还比较浅,主要是熟悉huggingface的使用。