2024-10-09
深度学习
00

目录

下载并配置Qwen2-VL-72B-Instruct-GPTQ-Int4模型
创建yaml配置文件
Dockerfile配置
构建Docker镜像
运行容器并挂载模型与数据集
本地访问代码示例
base64图片访问

下载并配置Qwen2-VL-72B-Instruct-GPTQ-Int4模型

首先,下载Qwen2-VL-72B-Instruct-GPTQ-Int4模型到指定路径(例如:/root/xiedong/Qwen2-VL-72B-Instruct-GPTQ-Int4)。该路径可以根据实际情况调整。

创建yaml配置文件

在路径/root/xiedong/Qwen2-VL-72B-Instruct-GPTQ-Int4下,创建一个名为sft_xd_custom.yaml的配置文件,内容如下:

yaml
model_name_or_path: /xiedong/Qwen2-VL-72B-Instruct-GPTQ-Int4 # 容器内的路径 template: qwen2_vl finetuning_type: lora

Dockerfile配置

以下是Dockerfile的配置,基础镜像可以根据你的需求选择适合的深度学习镜像:

dockerfile
# 使用指定的深度学习基础镜像 FROM kevinchina/deeplearning:llamafactory20241009 # 运行命令 CMD ["bash", "-c", "cd /app && llamafactory-cli api /xiedong/Qwen2-VL-72B-Instruct-GPTQ-Int4/sft_xd_custom.yaml"]

构建Docker镜像

使用以下命令构建Docker镜像:

bash
docker build -f Dockerfile . -t kevinchina/deeplearning:llamafactory_qwen2vl

运行容器并挂载模型与数据集

执行以下命令运行容器,并将模型挂载到/xiedong/Qwen2-VL-7B-Instruct,同时挂载数据集到算法容器中。这样,在本地请求时可以直接使用容器内的图片路径,而无需通过URL。

bash
docker run -d --rm --gpus=all \ -v /root/xiedong/Qwen2-VL-72B-Instruct-GPTQ-Int4:/xiedong/Qwen2-VL-72B-Instruct-GPTQ-Int4 \ -v /path/to/SAM-dataset:/data \ -p 7860:8000 \ --shm-size 16G \ kevinchina/deeplearning:llamafactory_qwen2vl | xargs -I {} docker logs -f {}

本地访问代码示例

以下是使用OpenAI API的本地访问代码示例:

python
from openai import OpenAI # 初始化OpenAI客户端 client = OpenAI(api_key='YOUR_API_KEY', base_url='http://101.136.22.140:7860/v1') # 获取模型名称 model_name = client.models.list().data[0].id # 发送请求并获取响应 response = client.chat.completions.create( model=model_name, messages=[{ 'role': 'user', 'content': [{ 'type': 'text', 'text': 'Describe the image please', }, { 'type': 'image_url', 'image_url': { 'url': 'https://raw.githubusercontent.com/open-mmlab/mmdeploy/main/tests/data/tiger.jpeg', }, }], }], temperature=0.8, top_p=0.8 ) # 打印返回的文本内容 print(response.choices[0].message.content)

base64图片访问

https://github.com/sashabaranov/go-openai/issues/539

python
import openai import base64 import io from PIL import Image import requests # 初始化 OpenAI 客户端 openai.api_key = "YOUR_API_KEY" # 替换为你的 API 密钥 def convert_image_to_base64(image_path): """ 将本地图片转换为 base64 字符串,并生成 data URL 格式 """ with open(image_path, 'rb') as image_file: base64_image = base64.b64encode(image_file.read()).decode("utf-8") return f"data:image/png;base64,{base64_image}" def create_prompt_turns(instruction, base64_image): """ 生成请求消息,包含文本和图片 """ prompt_turns = [ { "role": "user", "content": [ {"type": "text", "text": instruction}, { "type": "image_url", "image_url": { "url": base64_image, "detail": "low" # 可以根据需要设置图像质量级别 }, }, ] } ] return prompt_turns def send_request(image_path, tokens, language): """ 构造请求并发送给 OpenAI 接口 """ # 将图片转换为 base64 格式 base64_image = convert_image_to_base64(image_path) # 创建请求消息 system_prompt = "User's preferred language: " + language prompt_turns = create_prompt_turns(system_prompt, base64_image) # 构造请求体 data = { "model": "gpt-4-vision", # 替换为实际的模型名称 "messages": prompt_turns, "max_tokens": tokens, "temperature": 0.8, "top_p": 0.8 } # 发送 POST 请求到 API 端点 response = requests.post("http://101.136.22.140:7860/v1/chat/completions", json=data, headers={ "Authorization": f"Bearer {openai.api_key}", "Content-Type": "application/json" }) # 检查响应并打印结果 if response.status_code == 200: return response.json() else: print(f"Error: {response.status_code}, {response.text}") return None if __name__ == "__main__": # 设置相关参数 image_path = "input1.png" # 替换为你的图片路径 tokens = 1000 # 生成的最大tokens数 language = "English" # 偏好的语言 # 发送请求并打印结果 result = send_request(image_path, tokens, language) if result: print(result)
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!