Llava简述
介绍Llava是一个多模态大模型,本文以如下代码大致介绍下。 1234567891011121314151617181920212223242526import osos.environ['HF_ENDPOINT'] = 'https://hf-mirror.com' # noqaimport requestsfrom PIL import Imagefrom transformers import AutoProcessor, LlavaForConditionalGeneration, LlavaConfigconfig = LlavaConfig.from_pretrained("llava-hf/llava-1.5-7b-hf")model = LlavaForConditionalGenera..
更多多模态-繁体不同排版
前言最近有个需求,能够对不同排版格式的繁体信息进行抽取,所以从传统的版面分析+文字检测、识别+阅读顺序+NLP到现在发展的多模态大模型综合调研。 此处以文字区域检测+识别做个demo,来直观感受多模态大模型的结果。 总结 LVLM(large vision language model)相比LLM至少落后一代。 LVLM相比LLM更具有挑战性。1)多模态信息融合。2)从结果上看,训练时长与loss下降速度。3)高清图片,针对不同尺寸的图片,原来例如CLIP使用固长224*224像素来patch,Qwen-VL-Chat使用448,MiniCPM-V-2_6采用动态计算切分方式,来更好贴近原始SigLIP的输入尺寸,减少缩放后图片质量的损失。以及引入query embed来减少高清图片输入长度过长问题,看P..
更多graphviz-networkx-画图
1. graphviz docker12345678910FROM ubuntu:18.04ENV LANG C.UTF-8WORKDIR /codeCOPY . .RUN sed -i s@/deb.debian.org/@/mirrors.aliyun.com/@g /etc/apt/sources.list && \ sed -i s@/security.debian.org/@/mirrors.aliyun.com/@g /etc/apt/sources.list && \ apt-get clean && apt-get update && apt-get install -y python3-pip python3-dev bui..
更多多模态-ViLT
最近面试了一北京候选者,之前使用电子病例以及CT图像两种模态信息,训练ViLT多模态预测模型,提高肺结节良恶性预测准确率。正好我对多模态如何对齐也比较感兴趣,以Transformers-Tutorials提供的代码为例,来看下其内部是如何实现的。数据集我没有从VQA下载,太大了,这里也强烈安利huggingface提供的lmms-lab/VQAv2 dataset。 剩下就改下VQADataset部分,其他保持不变。 这里记录比较有趣的几个点。 1. text和image如何对齐?答案:在第二维对齐。 具体来说,text部分使用的是BertTokenizer,max_position为40(所以如果有长文本,这里就坑了),假设batch_size为4,text embedding出来后就是(4, 40, ..
更多SHAP机器学习模型解释
介绍分享个模型可解释的库SHAP,其可以对XGBoost等机器学习库进行结果解释。 更多还有类似Paddle中的TrustAI。 什么是SHAP?SHAP(SHapley Additive exPlanations)是用来解释机器学习模型的工具。它告诉我们每个特征对模型预测结果的贡献有多大。想象一下你和几个朋友一起干活,最后得到了一笔报酬。你想知道每个人应该分多少钱,SHAP就是在做类似的事情,只不过它是在告诉你每个特征对模型预测结果的贡献。 核心概念1. Shapley值: 想象一个团队在完成任务后得到一笔奖金,我们想公平地分配这笔奖金。Shapley值就是一种分配方法,告诉我们每个成员(在机器学习中是每个特征)应得的报酬(对预测结果的贡献)。 2. 边际贡献: 假设我们在玩一个游戏,每次加入一..
更多DPO
简介DPO全称Direct Preference Optimization,它是RLHF算法的一种,相比PPO算法来讲,它只需要actor和ref model,少了critic和reward model。其核心期望为good loss - bad loss越来越大, 这点和排序模型中的rank loss很相似,但是又不希望和ref model偏差太多。 最小实现代码1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859from copy import deepcopyimport torchimport torch.nn.functional ..
更多RLHF-Actor-Critic
简介值函数希望学习一个价值函数,这个值可以用于评估当前决策的分值。策略函数希望学习一个策略函数,拿到其动作的概率分布。 Actor-Critic是在策略函数的基础上,额外引入学习价值函数,来帮助策略函数更好地学习。 下面这个图很好表示了两者关系。 重点看actor-critic算法中update函数log_probs部分。actor采用策略,critic来进行评价。
更多lstm使用示例
注意,本文代码来自于plm-nlp-code。 学习任何模型都需要一个简单可行的例子进行说明,我会基于plm-nlp-code的代码进行说明lstm在序列标注和句子极性二分类两个例子的应用。 序列标注参考文件lstm_postag.py. 1. 加载数据12#加载数据train_data, test_data, vocab, pos_vocab = load_treebank() 其中load_treebank代码: 12345678910111213141516171819def load_treebank(): # 需要翻墙下载,可以自行设置代码 nltk.set_proxy('http://192.168.0.28:1080') # 如果没有的话那么则会下载,否则忽略 nl..
更多动态词向量之elmo
介绍elmo是用于解决静态词向量无法一词多义的模型。 在介绍如何实现elmo模型的时候,此处穿插进来Conv1d layer(一维卷积层)。 本文代码以plm-nlp-code chp6为准,可直接参考。 Conv1d介绍卷积有Conv1d(序列),Conv2d(图像),Conv3d(立体数据),主要区别在于不同方向上进行卷积。因为文字是一维结构的,从而在nlp领域使用Conv1d。 一维卷积适合在句子对于时序结构上体现不重要的方面有更加的优势。比如一句话中关键词位置的变动不影响句子的语义。但是对时序结构通常效果并不好,因为时间序列通常不满足平移不变的假设。 此处不过多介绍关于Conv1d的原理,感兴趣可看一维卷积tensorflow2版本的Conv1D以及Pytroch的nn.Conv1d用法。 此处只..
更多LLM-RLHF工作原理一
前言大模型最近很是火啊,媒体铺天盖地的宣传,候选者简历中写LLM微调等等。本文希望以huggingface trl/RLHF notebooks讲到的几个例子作为入口,介绍下RLHF在整个训练工作中的位置以及起到的作用,方便理解与后续应用。 代码分析在huggingface trl/RLHF notebooks这个文件夹下,一共有三个例子: gpt2-sentiment.ipynb gpt2-sentiment-control.ipynb best_of_n.ipynb 同时也按照上述这三个文件顺序进行分析。 一、gpt2-sentiment.ipynb 目的:这个文件实现的是如何利用RLHF学会生成正向评论。 1. Load IMDB dataset数据集默认有两个字段,text 和labe..
更多