首先,下载Qwen2-VL-72B-Instruct-GPTQ-Int4模型到指定路径(例如:/root/xiedong/Qwen2-VL-72B-Instruct-GPTQ-Int4
)。该路径可以根据实际情况调整。
在路径/root/xiedong/Qwen2-VL-72B-Instruct-GPTQ-Int4
下,创建一个名为sft_xd_custom.yaml
的配置文件,内容如下:
yamlmodel_name_or_path: /xiedong/Qwen2-VL-72B-Instruct-GPTQ-Int4 # 容器内的路径
template: qwen2_vl
finetuning_type: lora
以下是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镜像:
bashdocker build -f Dockerfile . -t kevinchina/deeplearning:llamafactory_qwen2vl
执行以下命令运行容器,并将模型挂载到/xiedong/Qwen2-VL-7B-Instruct
,同时挂载数据集到算法容器中。这样,在本地请求时可以直接使用容器内的图片路径,而无需通过URL。
bashdocker 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的本地访问代码示例:
pythonfrom 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)
https://github.com/sashabaranov/go-openai/issues/539
pythonimport 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)
本文作者:Dong
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!