ONNX 模型库
返回模型

说明文档

Phi-3.5-vision-instruct-onnx-cpu

<b><ul>注意:这是非官方版本,仅供测试和开发使用。</ul></b>

这是 Microsoft Phi-3.5 Vision 的 ONNX 格式 FP32 量化版本,支持 CPU。您可以运行此脚本进行转换

转换步骤

  1. 安装

pip install torch transformers onnx onnxruntime

pip install --pre onnxruntime-genai

  1. 在终端中设置环境

mkdir models

cd models 

  1. 在 models 文件夹中下载 microsoft/Phi-3.5-vision-instruct

https://huggingface.co/microsoft/Phi-3.5-vision-instruct

  1. 请将以下文件下载到您的 Phi-3.5-vision-instruct 文件夹中

https://huggingface.co/lokinfey/Phi-3.5-vision-instruct-onnx-cpu/resolve/main/onnx/config.json

https://huggingface.co/lokinfey/Phi-3.5-vision-instruct-onnx-cpu/blob/main/onnx/image_embedding_phi3_v_for_onnx.py

https://huggingface.co/lokinfey/Phi-3.5-vision-instruct-onnx-cpu/blob/main/onnx/modeling_phi3_v.py

  1. 将此文件下载到 models 文件夹

https://huggingface.co/lokinfey/Phi-3.5-vision-instruct-onnx-cpu/blob/main/onnx/build.py

  1. 打开终端

使用 FP32 转换为 ONNX 格式


python build.py -i .\Your Phi-3.5-vision-instruct Path\ -o .\vision-cpu-fp32 -p f32 -e cpu

使用 ORT for GenAI 运行


import onnxruntime_genai as og

model_path = './Your Phi-3.5-vision-instruct Path'

# 定义图像文件的路径
# 此路径指向用于演示或测试的图像文件
img_path = './Your Image Path'


# 从 onnxruntime_genai 模块创建 Model 类的实例
# 此实例使用模型文件的路径进行初始化
model = og.Model(model_path)

# 使用模型实例创建多模态处理器
# 此处理器将处理不同类型的输入数据(例如文本、图像)
processor = model.create_multimodal_processor()

# 使用处理器创建用于对输入数据进行分词的流
# 此流将用于处理和分词模型的输入数据
tokenizer_stream = processor.create_stream()

text = \"Your Prompt\"

# 使用用户标签初始化提示字符串变量
prompt = \"<|user|>\n\"

# 在提示中添加图像标签
prompt += \"<|image_1|>\n\"

# 将文本提示添加到提示字符串中,后跟结束标签
prompt += f\"{text}<|end|>\n\"

# 在提示中添加助手标签,表示助手响应的开始
prompt += \"<|assistant|\">\n\"

image = og.Images.open(img_path)

inputs = processor(prompt, images=image)

# 从 onnxruntime_genai 模块创建 GeneratorParams 类的实例
# 此实例使用模型对象进行初始化
params = og.GeneratorParams(model)

# 使用处理后的输入设置生成器参数的输入
params.set_inputs(inputs)

# 设置生成器参数的搜索选项
# max_length 参数指定生成输出的最大长度
params.set_search_options(max_length=3072)

generator = og.Generator(model, params)

# 循环直到生成器完成 token 生成
while not generator.is_done():
    # 计算下一个 token 的 logits(概率)
    generator.compute_logits()
    
    # 根据计算的 logits 生成下一个 token
    generator.generate_next_token()

    # 获取新生成的 token
    new_token = generator.get_next_tokens()[0]
    
    # 解码新 token 并将其附加到代码字符串中
    code += tokenizer_stream.decode(new_token)
    
    # 将解码的 token 打印到控制台,不带换行符,并刷新输出缓冲区
    print(tokenizer_stream.decode(new_token), end='', flush=True)

lokinfey/Phi-3.5-vision-instruct-onnx-cpu

作者 lokinfey

↓ 0 ♥ 0

创建时间: 2024-08-31 14:07:46+00:00

更新时间: 2024-08-31 14:49:32+00:00

在 Hugging Face 上查看

文件 (19)

.gitattributes
README.md
onnx/build.py
onnx/config.json
onnx/genai_config.json
onnx/image_embedding_phi3_v_for_onnx.py
onnx/modeling_phi3_v.py
onnx/processor_config.json
vision-cpu-fp32/genai_config.json
vision-cpu-fp32/phi-3.5-v-128k-instruct-text-embedding.onnx ONNX
vision-cpu-fp32/phi-3.5-v-128k-instruct-text-embedding.onnx.data
vision-cpu-fp32/phi-3.5-v-128k-instruct-text.onnx ONNX
vision-cpu-fp32/phi-3.5-v-128k-instruct-text.onnx.data
vision-cpu-fp32/phi-3.5-v-128k-instruct-vision.onnx ONNX
vision-cpu-fp32/phi-3.5-v-128k-instruct-vision.onnx.data
vision-cpu-fp32/processor_config.json
vision-cpu-fp32/special_tokens_map.json
vision-cpu-fp32/tokenizer.json
vision-cpu-fp32/tokenizer_config.json