[电商] 继70亿参数大模型后,阿里云又开源通义千问「多模态大模型 ...

[复制链接]
csyxd 发表于 2023-9-3 04:13:14|来自:中国 | 显示全部楼层 |阅读模式
继本月初魔搭社区宣布上架两款70亿参数开源模型QWen-7B和QWen-7B-Chat后,仅隔不到20天,阿里云再次宣布开源通义千问多模态大模型Qwen-VL和Qwen-VL-Chat,这两款模型均开源、免费、可商用。如何看待阿里云多次开源大模型?国内大模型的开源和普及将带来哪些新的可能性?
此前,阿里云开源通义千问70亿参数大模型:
全部回复5 显示全部楼层
diyaxu88 发表于 2023-9-3 04:13:22|来自:中国 | 显示全部楼层
8月3日,阿里云宣布开源Qwen-7B,就已经在知乎引起了众多讨论,而且上线当周冲上HuggingFace趋势榜单,不到一个月在GitHub收获3400多星,两个模型累计下载量已突破40万,在开源社区受到了广泛认可。
在过去的几个月中,大家逐渐学习和适应了基于聊天的与AI交流方式。但语言并不能描述我们生活中的一切。人类的眼睛获取了比耳朵更多的信息。因此,多模态是现在通用人工智能重要的技术演进方向之一,蕴含着大模型智能跃升的巨大可能。
而阿里的视觉语言模型Qwen-VL就是以Qwen-7B为基座研发的一款视觉语言模型,具备多模态信息理解能力,在主流的多模态任务评测和多模态聊天能力评测中取得了远超同等规模通用模型的表现。
我自己也对通义千问Qwen-VL进行了测试。
多轮视觉问答:


图片内容识别也有不错的表现,以后内容审核可能就不需要大量人力了:


看图写作:




最令我震惊的是我一次突发奇想地测试。我这几天正在出差,于是把办公室拍摄的一张照片发给了通义千问多模态模型。没想到还真的能获得正确的结果。要知道这在以往的计算机视觉领域是很难的问题。更何况图片拍摄地也不是在国内,景观也不是什么著名的地方。如下图所示:




这样的多模态能力着实令人惊喜。可以想象,这么一款能力优秀的多模态魔性的开源和可商用,将打开很多创新想法的魔盒,释放中小企业的创造力,让通义千问帮助市场作出更多有趣应用于不同场景的产品。
而且Qwen-VL是首个支持中文开放域定位的视觉语言模型,这就为中国中小企业创造更多可能提供了更方便的土壤。
滋滋629 发表于 2023-9-3 04:13:29|来自:中国 | 显示全部楼层
阿里云开源大规模视觉语言模型Qwen-VL,以通义千问70亿参数模型Qwen-7B为基座语言模型研发,可用于知识问答、图像标题生成、图像问答、文档问答、细粒度视觉定位等场景,阿里云将持续推动中国大模型生态建设。
开源地址:
1. ModelScope魔搭社区:
Qwen-VL https://modelscope.cn/models/qwen/Qwen-VL/summary
Qwen-VL-Chat https://modelscope.cn/models/qwen/Qwen-VL-Chat/summary
2. HuggingFace:
Qwen-VL https://huggingface.co/Qwen/Qwen-VL
Qwen-VL-Chat https://huggingface.co/Qwen/Qwen-VL-Chat
3. GitHub:
https://github.com/QwenLM/Qwen-VL
4. ModelScope“创空间”模型体验:
通义千问-多模态对话-Demo
下面视频是阿里云本次开源大模型Qwen-VL的效果演示+模型推理:


https://www.zhihu.com/video/1678571525136072704
qkw6358 发表于 2023-9-3 04:13:57|来自:中国 | 显示全部楼层
一、开放之旅

就在前两天,OpenAI开放了Fine-tuning for GPT-3.5 Turbo,并宣布会在秋季推出fine-tuning for GPT-4[1]。
我去读了下fine-tune流程,乍一看感觉还是蛮方便的。


不过,随着我仔细研读,很快就发现了问题所在,这项举动虽然看起来很好,但实际却显得有点鸡肋无用了。
首先,这个fine-tune和后续的调用都是要按照token来收费的,这就限制了很多普通用户的使用。虽然无需自己建模,云上调用,可是细水长流下来的花销不是普通人可以支付的。


其次,OpenAI 宣布,用户fine tune所用的训练数据需要经过特定的审核 API 和一个由 GPT-4支持的检测系统,以此发现与其安全标准相冲突的不安全训练数据。
对于用户以及不差钱大企业来说,数据的安全性是非常重要的,尤其是涉及到公司内部的隐私数据或者受保护的用户数据,任谁也不敢轻易将其传上去做微调,接受审核,乃至有着被OpenAI私自利用的可能性。况且,即便不差钱,时时刻刻在给Chatgpt烧钱也不是个好选择。
二、扭捏与大方

对比下来,相比于OpenAI扭扭捏捏、踌躇不定的挤牙膏姿态,我还是更欣赏Meta和阿里这种走开源路线的厂商。它们真正贯彻了互联网的精神:开放、平等、协作、分享。
当我看到Meta AI 选择开源 Llama2,阿里选择开源通义千问的时候,我就知道,OpenAI真正的敌手到来了。打败OpenAI的,一定不是一个表现更优秀的闭源模型,而是开源这条赛道。
本月初,阿里云便率先开源了自己的QWen-7B和QWen-7B-Chat[2],一度冲上HuggingFace趋势榜单,Github也获星颇多,两个模型的参数规模都是70亿。


其实这点也倒并不是特别意外,国内互联网厂商众多,做大模型的也不少,总有佼佼者敢于亮剑,选择开源这条道路的。作为普通用户,我自然喜闻乐见如此行径。
让我颇感意外的是,仅仅半个多月后,阿里云马上又紧跟着宣布开源通义千问多模态大模型Qwen-VL和Qwen-VL-Chat[3,4]。
多模态啊,这可不是简单的生成图片,而是支持多图输入和比较,指定图片问答和多图文学创作等。
这是我早已期待太久的功能了,其实早在GPT-4出来的时候,我便第一时间读了OpenAI的报告,然后马上写了回答,里面也讲了我对多模态图文交互功能的期待[5]。
只不过,让人没想到的是,第一次体现LLM的多模态功能,居然是在阿里的开源Qwen-VL-Chat上面[6]。
我很开心,做了好多测试,这里分享出来几个给大家瞧瞧:

  • 可爱嘉然~


2. 代码解释


3. 一辈子也不会离开你


好了,以上做些简单的测试,更多有趣的玩法各位可以去我给的参考链接试试看。
三、一些感想

Qwen-VL和Qwen-VL-Chat可以接受文本和图像提示,这与纯文本设置并行,允许用户指定任何视觉或语言任务,备多模态信息理解能力,在主流的多模态任务评测和多模态聊天能力评测中取得了远超同等规模通用模型的表现。这是我从官方开源文档扒下来的图,最外圈的红色就是。


从单一感官的、仅支持文本输入的语言模型,到“五官全开”的、支持文本、图像、音频等多种信息输入的多模态模型,这是未来大模型走的一条必经之路。而阿里则率先迈出了国内的第一步。
更重要的是,秉持着伟大的互联网精神,这还是开源的。
从月初到现在,阿里这种连续快速的开源动作,显示出了其拥抱开源的决心和态度。国内头部大模型厂商的技术引领和技术共享,不仅对于推进中国大模型生态建设意义重大,而且对于所有开发者和用户的帮助和体验也都是极为重要的。
我很欣赏开源的做法,在相当长的时间内,开源必将带来更大的普及性,占据更大的讨论价值和研究地位。 此外,得益于阿里云的存在,通义千问本身也在提供云端的自研大模型,这种开源和云端的一体结合共存,我觉得为了会吸引越来越多的普通用户和开发者。
最后,希望秉持着Meta和阿里云这种开源精神的大模型厂商越来越多,技术共享,百花齐放,构建更开放完善的LLM生态。
参考:

[1] https://openai.com/blog/gpt-3-5-turbo-fine-tuning-and-api-updates
[2] https://huggingface.co/Qwen/Qwen-7B-Chat
[3] https://modelscope.cn/models/qwen/Qwen-VL/summary
[4] https://modelscope.cn/models/qwen/Qwen-VL-Chat/summary
[5] https://www.zhihu.com/question/589641645/answer/2937295732
[6] https://modelscope.cn/studios/qwen/Qwen-VL-Chat-Demo/summary/
freshfish 发表于 2023-9-3 04:14:30|来自:中国 | 显示全部楼层
作为魔搭开源社区,很开心第一时间体验到了通义千问的多模态的能力,相比于此前的模型,Qwen-VL除了基本的图文识别、描述、问答、对话能力之外,还新增了像视觉定位、图像中文字理解等重要基础能力,Qwen-VL可以接受图像,多语言文本作为输入,并输出图像或者文本。
目前,通义千问开源了 Qwen-VL 系列的两个模型:

  • Qwen-VL: Qwen-VL 以 Qwen-7B 的预训练模型作为语言模型的初始化,并以ViT-bigG作为视觉编码器的初始化,中间加入单层随机初始化的 cross-attention,经过约1.5B的图文数据训练得到。最终图像输入分辨率为448。
  • Qwen-VL-Chat: 在 Qwen-VL 的基础上,通义千问团队使用对齐机制打造了基于大语言模型的视觉AI助手Qwen-VL-Chat,可以让开发者快速搭建具备多模态能力的对话应用。
社区小助理尝试理解的Qwen-VL是如何工作的:


在上面图片中,输出“击掌”的检测框比输出人or狗的检测框更难,因为“击掌”是泛化出来的自然语言域的通用检测,训练集中没有。“人”和“狗”一般在检测训练集中大量存在,由此可见Qwen-VL较强的泛化能力。
同时社区也第一时间适配和通义千问多模态的推理,量化,微调

环境建议

  • python 3.8及以上版本
  • pytorch 1.12及以上版本,推荐2.0及以上版本
  • 建议使用CUDA 11.4及以上(GPU用户需考虑此选项)
使用步骤

本文在ModelScope的限时免费的Notebook的环境(这里以PAI-DSW为例)配置下运行 (可单卡运行, 量化前显存要求22G,量化后大概是10G)
服务器连接与环境准备

1、进入ModelScope首页:modelscope.cn,进入我的Notebook




2、选择GPU环境,进入PAI-DSW在线开发环境




3、新建Notebook




同时社区支持在线体验通义千问多模态的能力:

模型零代码创空间体验地址:https://modelscope.cn/models/qwen/Qwen-VL-Chat
效果展示:

视觉问答:





文字理解





图片理解





数学推理





多图理解






Qwen系列模型现已在ModelScope社区开源,包括:
Qwen-VL-Chat
模型链接:https://modelscope.cn/models/qwen/Qwen-VL-Chat
Qwen-VL
模型链接:https://modelscope.cn/models/qwen/Qwen-VL
社区支持直接下载模型的repo:
  1. from modelscope.hub.snapshot_download import snapshot_download
  2. model_dir = snapshot_download('Qwen-VL-Chat', 'v1.0.0')
复制代码
模型推理

依赖项:
  1. pip install modelscope -U
  2. pip install transformers accelerate tiktoken -U
  3. pip install einops transformers_stream_generator -U
  4. pip install "pillow==9.*" -U
  5. pip install torchvision
  6. pip install matplotlib -U
复制代码
推理代码:
  1. from modelscope import (
  2.     snapshot_download, AutoModelForCausalLM, AutoTokenizer, GenerationConfig
  3. )
  4. import torch
  5. model_id = 'qwen/Qwen-VL-Chat'
  6. revision = 'v1.0.0'
  7. model_dir = snapshot_download(model_id, revision=revision)
  8. torch.manual_seed(1234)
  9. # 请注意:分词器默认行为已更改为默认关闭特殊token攻击防护。
  10. tokenizer = AutoTokenizer.from_pretrained(model_dir, trust_remote_code=True)
  11. if not hasattr(tokenizer, 'model_dir'):
  12.     tokenizer.model_dir = model_dir
  13. # 打开bf16精度,A100、H100、RTX3060、RTX3070等显卡建议启用以节省显存
  14. # model = AutoModelForCausalLM.from_pretrained(model_dir, device_map="auto", trust_remote_code=True, bf16=True).eval()
  15. # 打开fp16精度,V100、P100、T4等显卡建议启用以节省显存
  16. model = AutoModelForCausalLM.from_pretrained(model_dir, device_map="auto", trust_remote_code=True, fp16=True).eval()
  17. # 使用CPU进行推理,需要约32GB内存
  18. # model = AutoModelForCausalLM.from_pretrained(model_dir, device_map="cpu", trust_remote_code=True).eval()
  19. # 默认使用自动模式,根据设备自动选择精度
  20. # model = AutoModelForCausalLM.from_pretrained(model_dir, device_map="auto", trust_remote_code=True).eval()
  21. # 可指定不同的生成长度、top_p等相关超参
  22. model.generation_config = GenerationConfig.from_pretrained(model_dir, trust_remote_code=True)
  23. # 第一轮对话 1st dialogue turn
  24. query = tokenizer.from_list_format([
  25.     {'image': 'https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen-VL/assets/demo.jpeg'},
  26.     {'text': '这是什么'},
  27. ])
  28. response, history = model.chat(tokenizer, query=query, history=None)
  29. print(response)
  30. # 图中是一名年轻女子在沙滩上和她的狗玩耍,狗的品种是拉布拉多。她们坐在沙滩上,狗的前腿抬起来,与人互动。
  31. # 第二轮对话 2st dialogue turn
  32. response, history = model.chat(tokenizer, '输出击掌的检测框', history=history)
  33. print(response)
  34. # <ref>"击掌"</ref><box>(211,412),(577,891)</box>
  35. image = tokenizer.draw_bbox_on_latest_picture(response, history)
  36. image.save('output_chat.jpg')
复制代码
资源消耗(fp推理22G显存,量化后10G左右):


模型微调和微调后推理

微调代码开源地址: https://github.com/modelscope/swift/blob/main/examples/pytorch/llm
clone swift仓库并安装swift
  1. git clone https://github.com/modelscope/swift.git
  2. cd swift
  3. pip install .
  4. cd examples/pytorch/llm
复制代码
模型微调脚本 (qlora)
  1. # 14GB VRAM
  2. CUDA_VISIBLE_DEVICES=0 \
  3. python src/llm_sft.py \
  4.     --model_type qwen-vl-chat \
  5.     --sft_type lora \
  6.     --template_type chatml \
  7.     --dtype bf16 \
  8.     --output_dir runs \
  9.     --dataset coco-en \
  10.     --dataset_sample 20000 \
  11.     --num_train_epochs 1 \
  12.     --max_length 1024 \
  13.     --quantization_bit 4 \
  14.     --bnb_4bit_comp_dtype bf16 \
  15.     --lora_rank 64 \
  16.     --lora_alpha 16 \
  17.     --lora_dropout_p 0.05 \
  18.     --lora_target_modules ALL \
  19.     --batch_size 1 \
  20.     --weight_decay 0. \
  21.     --learning_rate 1e-4 \
  22.     --gradient_accumulation_steps 16 \
  23.     --max_grad_norm 0.5 \
  24.     --warmup_ratio 0.03 \
  25.     --eval_steps 50 \
  26.     --save_steps 50 \
  27.     --save_total_limit 2 \
  28.     --logging_steps 10 \
  29.     --use_flash_attn false \
  30.     --push_to_hub false \
  31.     --hub_model_id qwen-vl-chat-qlora \
  32.     --hub_private_repo true \
  33.     --hub_token 'your-sdk-token' \
复制代码
模型微调后的推理脚本
  1. # 10G
  2. CUDA_VISIBLE_DEVICES=0 \
  3. python src/llm_infer.py \
  4.     --model_type qwen-vl-chat \
  5.     --sft_type lora \
  6.     --template_type chatml \
  7.     --dtype bf16 \
  8.     --ckpt_dir "runs/qwen-vl-chat/vx_xxx/checkpoint-xxx" \
  9.     --eval_human false \
  10.     --dataset coco-en \
  11.     --dataset_sample 20000 \
  12.     --quantization_bit 4 \
  13.     --bnb_4bit_comp_dtype bf16 \
  14.     --max_new_tokens 1024 \
  15.     --temperature 0.9 \
  16.     --top_k 50 \
  17.     --top_p 0.9 \
  18.     --do_sample true \
复制代码
微调的可视化结果

训练损失:




评估损失




资源消耗:

qwen-vl-chat使用qlora的方式训练的显存占用如下,大约在14G. (quantization_bit=4, batch_size=1, max_length=1024)



欢迎大家来魔搭社区体验通义千问多模态模型,并尝试用社区的微调训练框架探索多模态模型的定制化,行业化!
kninja 发表于 2023-9-3 04:15:06|来自:中国 | 显示全部楼层
起猛了,看到阿里云开源通义千问多模态大模型了。
我还专门确认了一下自己没看错,前几天不是刚开源Qwen-7B吗,怎么这么快就又掏出多模态大模型了?立马爬起来跑了一下Qwen-VL-Chat模型,测试了一下效果…说实话,效果比我预期的好很多。(后面有部署教程和实测案例)
支持多模态意味着千问从语言模型走向视觉语言模型的巨大进步,并在今后有望支持更多的输入输出模式。我们日常交流虽然主要靠语言,但每天获取信息更多地是靠视觉、听觉等感知能力,应该说图像里蕴含着更多的直观信息,而语言则是相对抽象的信息呈现。换句话说,多模态才是更「拟人」的信息处理方式,支持多模态,能够让AI更好地模拟人类接收信息、处理信息。
今年3月GPT-4发布时,将多模态识图能力作为重点进行了介绍,但至今都没能体验到。没想到阿里云刚刚开源Qwen-7B的大语言模型不久,就一鼓作气开源了多模态模型。
话不多说,来给大家看一下我的部署和测试过程:
Qwen-VL-Chat部署

初步体验Qwen-VL-Chat的话,推荐大家登录魔搭社区,使用社区上的Demo:
通义千问-多模态对话-Demo想要自己部署模型的话,也可以在魔搭社区云上部署:
通义千问-VL-Chat即便在自己电脑上本地部署也不麻烦,一次成功。只需要三步:
第一步,拉取代码库:git clone https://github.com/QwenLM/Qwen-VL.git


第二步,安装依赖(提前安装好Pytorch和CUDA):
pip install -r requirements.txt
pip install -r requirements_web_demo.txt
第三步,运行 python web_demo_mm.py(第一次运行会从 Huggingface 自动下载模型文件,大概20个G,如果网络不好的话,也可以手动下载模型放入文件夹)


修改listen为0.0.0.0可以在局域网内访问;设置share=True可以开放一个公网demo:


Qwen-VL-Chat Demo测试

测试1:坤哥



只看背影似乎不认识坤哥。(不过多轮对话能力是有的)


正面就OK了,不过似乎是因为有名字标识,通过文字识别到的;遮住名字单看脸有概率识别成功(=有概率失败)。
测试2:人物识别+标注

上传复联图片,要求标识绿巨人并询问图中其他角色


准确地标识出了绿巨人的位置,也正确地给出了其他几个角色名。
测试3:文字识别

例1:菜谱


emmmm,文字识别和数学是OK的(尖椒→青椒),但你对这个不辣是不是有点误解…
例2:楼层分布导引


正确答案是507室,不过五楼是答对了的。
例3:路牌


以后和智能汽车结合起来,是不是就相当于多了一个副驾驶帮我们看路牌和警示标志了。
例4:手写


手写识别没有问题,不过字迹不能太潦草。图片识别+大语言模型,其实可以实现将我们手写的一些笔记格式化成JSON格式的待办事项,进而导入/提交到清单类App中,很有前景…
测试4:场景/建筑识别



测试5:草图转HTML代码



内容基本识别正确,但输出结果比较简单。
测试6:多图间关系



Qwen-VL(Chat) 模型评价

经过上面的测试,我整体上是很满意的。Qwen-VL视觉语言模型的识别准确度很高,官方说法是他们训练了1.5B的图文数据,支持的图像输入分辨率为448,我觉得能呈现这样的效果已经很棒了。
从上面的测试结果中,可以看出Qwen-VL(Chat)的一些特点:

  • 支持多语言:虽然我只放出了中文测试,但英文支持也不错
  • 支持多图输入:可以在上下文中添加多图进行识别,并进行交叉分析
  • 支持检测标注:在人、物、建筑等测试中,都能准确地框选结果
  • 识别准确率高:从图像识别的角度,对图像的基本元素都能准确识别
通义团队自己做了一些benchmark,我自己测试完以后觉得这些结果并不夸大:


他们为了评测图文对话能力和人类的对齐水平,还专门构建了一个使用GPT-4进行打分的评测模型TouchStone,也是很有趣的一个测评工具,可以单独进行开源。图中最外围的红色部分,就是本次Qwen-VL的评测结果,不得不让人感叹我们的国产大模型做得是越来越好了。


从测评结果来看,Qwen-VL在多个场景下取得了同等尺寸开源视觉语言模型中的最好结果。Qwen-VL-Chat模型在中英文对齐测评中取得了开源大规模视觉语言模型的最好成绩:


应该说,在同等规模下,Qwen-VL取得了非常亮眼的成绩,大家感兴趣的可以自己测试一下,做一点贡献,为开源社区添砖加瓦。
再聊聊开源

上次阿里云开源Qwen-7B 的时候我就说过[1]:我们应该坚定地支持、赞扬大厂做开源。阿里云开源Qwen-VL让我更加坚定了这个看法。
这次多模态大模型Qwen-VL和Qwen-VL-Chat也都是开源、免费、可商用的,这对国内大模型开源社区的,也能看出阿里云继续构建开源生态的决心。
开源对于大厂意味着将内部的研发成果无偿地进行公开,尽管对大厂本身也有一些好处(比如构建模型社区、提供云资源服务、引领产业发展),但真正能做出开源的决定,绝对是非常有担当的行为。
最后,也希望能尽快看到Qwen-VL的论文,继续开源评测脚本、TouchStone评测数据集和更多工作细节,也再次给阿里云和通义千问团队点赞,希望他们能在国产大模型开源领域做出更多贡献。

快速回帖

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则