微软开源4.2B参数多模态SLM模型Phi-3-vision,魔搭社区推理、微调实战教程来啦!

简介: 在 Microsoft Build 2024 上,微软持续开源了 Phi-3 系列的新模型们。包括 Phi-3-vision,这是一种将语言和视觉功能结合在一起的多模态模型。

在 Microsoft Build 2024 上,微软持续开源了 Phi-3 系列的新模型们。包括 Phi-3-vision,这是一种将语言和视觉功能结合在一起的多模态模型。

Phi-3家族

Phi-3 系列模型是功能强大、性价比高的小型语言模型 (SLM),在各种语言、推理、编码和数学基准测试中,效果优异。它们使用高质量的训练数据进行训练。

Phi-3 模型系列共有四种模型;每种模型都经过安全保障进行指令调整和开发,以确保可以直接使用,目前均已开源。

  • Phi-3-vision是一个具有语言和视觉功能的 4.2B 参数多模态模型。
  • Phi-3-mini是一个 3.8B 参数语言模型,有两种上下文长度(128K和4K)。
  • Phi-3-small是一个 7B 参数语言模型,有两种上下文长度(128K和8K)。
  • Phi-3-medium是一个 14B 参数语言模型,有两种上下文长度(128K和4K)。

模型种类

模型名称

模型链接

Phi-3-vision

Phi-3-vision-128k-instruct

https://modelscope.cn/models/LLM-Research/Phi-3-vision-128k-instruct

Phi-3-mini

Phi-3-mini-128k-instruct

https://modelscope.cn/models/LLM-Research/Phi-3-mini-128k-instruct

Phi-3-mini-4k-instruct

https://modelscope.cn/models/LLM-Research/Phi-3-mini-4k-instruct

Phi-3-mini-128k-instruct-onnx

https://modelscope.cn/models/LLM-Research/Phi-3-mini-128k-instruct-onnx

Phi-3-mini-4k-instruct-onnx

https://modelscope.cn/models/LLM-Research/Phi-3-mini-4k-instruct-onnx

Phi-3-mini-4k-instruct-onnx-web

https://modelscope.cn/models/LLM-Research/Phi-3-mini-4k-instruct-onnx-web

Phi-3-small

Phi-3-small-8k-instruct

https://modelscope.cn/models/LLM-Research/Phi-3-small-8k-instruct/summary

Phi-3-small-8k-instruct-onnx-cuda

https://modelscope.cn/models/LLM-Research/Phi-3-small-8k-instruct-onnx-cuda/summary

Phi-3-small-128k-instruct

https://modelscope.cn/models/LLM-Research/Phi-3-small-128k-instruct

Phi-3-small-128k-instruct-onnx-cuda

https://modelscope.cn/models/LLM-Research/Phi-3-small-128k-instruct-onnx-cuda

Phi-3-medium

Phi-3-medium-128k-instruct

https://modelscope.cn/models/LLM-Research/Phi-3-medium-128k-instruct

Phi-3-medium-4k-instruct

https://modelscope.cn/models/LLM-Research/Phi-3-medium-4k-instruct

Phi-3-medium-4k-onnx-directml

https://modelscope.cn/models/LLM-Research/Phi-3-medium-4k-instruct-onnx-directml

Phi-3-medium-4k-onnx-cuda

https://modelscope.cn/models/LLM-Research/Phi-3-medium-4k-instruct-onnx-cuda

Phi-3-medium-4k-onnx-cpu

https://modelscope.cn/models/LLM-Research/Phi-3-medium-4k-instruct-onnx-cpu

Phi-3-medium-128k-onnx-directml

https://modelscope.cn/models/LLM-Research/Phi-3-medium-128k-instruct-onnx-directml

Phi-3-medium-128k-onnx-cuda

https://modelscope.cn/models/LLM-Research/Phi-3-medium-128k-instruct-onnx-cuda

Phi-3-medium-128k-onnx-cpu

https://modelscope.cn/models/LLM-Research/Phi-3-medium-128k-instruct-onnx-cpu

Phi-3 模型已经过优化,可以在各种硬件上运行。ONNX (ONNX Runtime | Phi-3 Small and Medium Models are now optimized with ONNX Runtime and DirectML)格式和 DirectML提供优化过的模型权重,为开发人员提供跨各种设备和平台(包括移动和 Web 部署)的支持。Phi-3 模型还可以作为NVIDIA NIM推理微服务提供,具有标准 API 接口,可以部署在任何地方(Production-Ready APIs That Run Anywhere | NVIDIA),并针对 NVIDIA GPU(https://blogs.nvidia.com/blog/microsoft-build-optimized-ai-developers/)和Intel 加速器(Microsoft Phi-3 GenAI Models with Intel AI Solutions)上的推理进行了优化。

将多模态引入Phi-3

Phi-3-vision 是 Phi-3 系列中的第一个多模态模型,它将文本和图像结合在一起,并具有推理现实世界图像以及从图像中提取和推理文本的能力。它还针对图表和图解理解进行了优化,可用于生成见解和回答问题。Phi-3-vision 以 Phi-3-mini 的语言功能为基础,继续在小型模型中整合强大的语言和图像推理质量。

模型推理

多模态模型推理(Phi-3-vision-128k-instruct)

在魔搭社区的免费GPU算力体验Phi-3多模态模型(单卡A10)

推理代码


from PIL import Image 
import requests 
from modelscope import snapshot_download
from transformers import AutoModelForCausalLM 
from transformers import AutoProcessor 
model_id = snapshot_download("LLM-Research/Phi-3-vision-128k-instruct" )
model = AutoModelForCausalLM.from_pretrained(model_id, device_map="cuda", trust_remote_code=True, torch_dtype="auto")
processor = AutoProcessor.from_pretrained(model_id, trust_remote_code=True) 
messages = [ 
    {"role": "user", "content": "<|image_1|>\n图片里面有什么?"}, 
    {"role": "assistant", "content": "该图表显示了同意有关会议准备情况的各种陈述的受访者的百分比。它显示了五个类别:“有明确和预先定义的会议目标”、“知道在哪里可以找到会议所需的信息”、“在受邀时了解我的确切角色和职责”、“拥有管理工具” 诸如记笔记或总结之类的管理任务”,以及“有更多的专注时间来充分准备会议”。每个类别都有一个关联的条形图,指示一致程度,按 0% 到 100% 的范围进行衡量。"}, 
    {"role": "user", "content": "提供富有洞察力的问题来引发讨论。"} 
] 
url = "https://assets-c4akfrf5b4d3f4b7.z01.azurefd.net/assets/2024/04/BMDataViz_661fb89f3845e.png" 
image = Image.open(requests.get(url, stream=True).raw) 
prompt = processor.tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = processor(prompt, [image], return_tensors="pt").to("cuda:0") 
generation_args = { 
    "max_new_tokens": 500, 
    "temperature": 0.0, 
    "do_sample": False, 
} 
generate_ids = model.generate(**inputs, eos_token_id=processor.tokenizer.eos_token_id, **generation_args) 
# remove input tokens 
generate_ids = generate_ids[:, inputs['input_ids'].shape[1]:]
response = processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0] 
print(response)


显存占用:


跨平台推理(Phi-3-medium-4k-instruct-onnx-cpu)

配置:

step1: 下载模型

git clone https://www.modelscope.cn/LLM-Research/Phi-3-medium-4k-instruct-onnx-cpu.git

step2:安装依赖

pip install --pre onnxruntime-genai

step3:运行模型

curl https://raw.githubusercontent.com/microsoft/onnxruntime-genai/main/examples/python/phi3-qa.py -o phi3-qa.py
python phi3-qa.py -m Phi-3-medium-4k-instruct-onnx-cpu/cpu-int4-rtn-block-32-acc-level-4

体验对话效果


模型微调

SWIFT已经支持Phi3系列模型的微调,包括纯文本模型如Phi3-mini-128k-instruct、Phi3-small-128k-instruct、Phi3-middle-128k-instruct等,也包括了Phi3的多模态模型Phi-3-vision-128k-instruct。

下面以多模态模型为例给出微调最佳实践:

# Experimental environment: 4 * A100
# 4 * 18GB GPU memory
nproc_per_node=4
PYTHONPATH=../../.. \
CUDA_VISIBLE_DEVICES=0,1,2,3 \
torchrun \
    --nproc_per_node=$nproc_per_node \
    --master_port 29500 \
    llm_sft.py \
    --model_type phi3-vision-128k-instruct \
    --model_revision master \
    --sft_type lora \
    --tuner_backend peft \
    --template_type AUTO \
    --dtype AUTO \
    --output_dir output \
    --ddp_backend nccl \
    --dataset coco-en-2-mini \
    --train_dataset_sample -1 \
    --num_train_epochs 1 \
    --max_length 4096 \
    --check_dataset_strategy warning \
    --lora_rank 8 \
    --lora_alpha 32 \
    --lora_dropout_p 0.05 \
    --lora_target_modules ALL \
    --gradient_checkpointing true \
    --batch_size 1 \
    --weight_decay 0.1 \
    --learning_rate 1e-4 \
    --gradient_accumulation_steps $(expr 16 / $nproc_per_node) \
    --max_grad_norm 0.5 \
    --warmup_ratio 0.03 \
    --eval_steps 100 \
    --save_steps 100 \
    --save_total_limit 2 \
    --logging_steps 10 \
    --use_flash_attn true \
    --ddp_find_unused_parameters true \


我们使用训练时长约3小时,训练loss收敛情况如下:



显存占用:


Phi3-vision支持多个图片传入,在训练后我们可以使用ckpt进行多图片推理:


显存占用:


点击链接👇直达原文

https://modelscope.cn/models/LLM-Research/Phi-3-vision-128k-instruct/summary

相关文章
|
1月前
|
负载均衡 测试技术 调度
大模型分布式推理:张量并行与流水线并行技术
本文深入探讨大语言模型分布式推理的核心技术——张量并行与流水线并行。通过分析单GPU内存限制下的模型部署挑战,详细解析张量并行的矩阵分片策略、流水线并行的阶段划分机制,以及二者的混合并行架构。文章包含完整的分布式推理框架实现、通信优化策略和性能调优指南,为千亿参数大模型的分布式部署提供全面解决方案。
453 4
|
1月前
|
人工智能 搜索推荐 程序员
当AI学会“跨界思考”:多模态模型如何重塑人工智能
当AI学会“跨界思考”:多模态模型如何重塑人工智能
257 120
|
1月前
|
机器学习/深度学习 缓存 自然语言处理
【万字长文】大模型训练推理和性能优化算法总结和实践
我们是阿里云公共云 AI 汽车行业大模型技术团队,致力于通过专业的全栈 AI 技术推动 AI 的落地应用。
1287 38
【万字长文】大模型训练推理和性能优化算法总结和实践
|
1月前
|
存储 监控 算法
1688 图片搜索逆向实战:CLIP 多模态融合与特征向量落地方案
本文分享基于CLIP模型与逆向工程实现1688图片搜同款的实战方案。通过抓包分析破解接口签名,结合CLIP多模态特征提取与Faiss向量检索,提升搜索准确率至91%,单次响应低于80ms,日均选品效率提升4倍,全程合规可复现。
|
1月前
|
机器学习/深度学习 存储 并行计算
大模型推理加速技术:FlashAttention原理与实现
本文深入解析大语言模型推理加速的核心技术——FlashAttention。通过分析传统注意力机制的计算瓶颈,详细阐述FlashAttention的IO感知算法设计、前向反向传播实现,以及其在GPU内存层次结构中的优化策略。文章包含完整的CUDA实现示例、性能基准测试和实际部署指南,为开发者提供高效注意力计算的全套解决方案。
327 10
|
1月前
|
缓存 物联网 PyTorch
使用TensorRT LLM构建和运行Qwen模型
本文档介绍如何在单GPU和单节点多GPU上使用TensorRT LLM构建和运行Qwen模型,涵盖模型转换、引擎构建、量化推理及LoRA微调等操作,并提供详细的代码示例与支持矩阵。
393 2

热门文章

最新文章

下一篇
oss云网关配置