Phi-4-Reasoning-Vision简单调用:Python API封装与REST接口调用示例
Phi-4-Reasoning-Vision简单调用Python API封装与REST接口调用示例1. 项目概述Phi-4-Reasoning-Vision是基于微软Phi-4-reasoning-vision-15B多模态大模型开发的高性能推理工具专为双卡4090环境优化。该工具严格遵循官方SYSTEM PROMPT规范支持THINK/NOTHINK双推理模式、图文多模态输入、流式输出与思考过程折叠展示。1.1 核心特性双卡并行优化自动将15B模型拆分至两张4090显卡采用bfloat16精度加载官方Prompt适配严格遵循Phi-4官方要求的SYSTEM PROMPT格式流式输出解析实现逐字流式输出智能分离思考过程与最终结论多模态输入支持支持JPG/PNG图片上传与文本提问组合输入专业级交互界面通过Streamlit搭建宽屏交互界面优化用户体验2. 环境准备2.1 硬件要求显卡双NVIDIA RTX 409024GB显存内存64GB以上存储至少50GB可用空间2.2 软件依赖pip install torch2.0.1 transformers4.33.0 streamlit1.25.03. Python API封装与调用3.1 基础API封装以下是一个简单的Python API封装示例展示了如何初始化模型并进行推理from transformers import AutoModelForCausalLM, AutoTokenizer import torch class Phi4VisionAPI: def __init__(self, model_pathmicrosoft/phi-4-reasoning-vision-15B): self.device_map {: cuda:0} # 双卡自动分配 self.model AutoModelForCausalLM.from_pretrained( model_path, torch_dtypetorch.bfloat16, device_mapauto ) self.tokenizer AutoTokenizer.from_pretrained(model_path) def generate_response(self, image_path, question, modeTHINK): # 处理图片和文本输入 inputs self._prepare_inputs(image_path, question, mode) # 生成响应 outputs self.model.generate(**inputs) return self.tokenizer.decode(outputs[0], skip_special_tokensTrue) def _prepare_inputs(self, image_path, question, mode): # 实际实现中需要处理图片和文本的预处理 pass3.2 流式输出实现以下是实现流式输出的关键代码from transformers import TextIteratorStreamer from threading import Thread def stream_response(model, tokenizer, inputs): streamer TextIteratorStreamer(tokenizer) generation_kwargs dict(inputs, streamerstreamer, max_new_tokens512) thread Thread(targetmodel.generate, kwargsgeneration_kwargs) thread.start() for new_text in streamer: yield new_text4. REST接口调用示例4.1 使用FastAPI搭建服务from fastapi import FastAPI, UploadFile, File from fastapi.responses import StreamingResponse import io from PIL import Image app FastAPI() phi4_api Phi4VisionAPI() app.post(/analyze-image) async def analyze_image( image: UploadFile File(...), question: str, mode: str THINK ): image_data await image.read() img Image.open(io.BytesIO(image_data)) def generate(): for chunk in phi4_api.stream_response(img, question, mode): yield chunk return StreamingResponse(generate(), media_typetext/plain)4.2 客户端调用示例import requests def call_phi4_api(image_path, question, modeTHINK): url http://localhost:8000/analyze-image files {image: open(image_path, rb)} data {question: question, mode: mode} with requests.post(url, filesfiles, datadata, streamTrue) as r: for chunk in r.iter_content(chunk_sizeNone): print(chunk.decode(), end, flushTrue)5. 实际应用示例5.1 图片描述生成api Phi4VisionAPI() response api.generate_response( image_pathexample.jpg, questionPlease describe this image in detail, modeTHINK ) print(response)5.2 视觉问答示例response api.generate_response( image_pathproduct.jpg, questionWhat are the key features of this product?, modeNOTHINK ) print(response)6. 常见问题解决6.1 显存不足问题如果遇到显存不足错误可以尝试以下解决方案减少max_new_tokens参数值关闭其他占用显存的程序使用更低精度的数据类型如fp166.2 模型加载缓慢模型首次加载可能需要较长时间建议确保模型已下载到本地使用SSD存储加速加载预加载模型到内存中7. 总结本文介绍了Phi-4-Reasoning-Vision的Python API封装和REST接口调用方法。通过简单的代码示例展示了如何初始化多模态大模型实现流式输出搭建REST API服务处理图片和文本输入该工具为开发者提供了便捷的方式来体验15B参数多模态模型的强大推理能力特别适合需要深度视觉理解的应用场景。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2451523.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!