PaliGemma 是 Google 开发的轻量级的具有多模态功能的视觉语言模型 (VLM)。
https://ai.google.dev/gemma/docs/paligemma?hl=zh-cn
它将图片和文本作为输入,可以回答有关图片的问题并提供详细信息和上下文。
这意味着 PaliGemma 可以对图片进行更深入的分析,并提供有用的数据洞见,例如:为图片和短视频添加说明、对象检测以及读取图片中嵌入的文字。
下面是环境搭建和演示代码:
环境搭建
涉及到显卡驱动、CUDA、Python环境、PyTorch这些。
显卡驱动
我这里的3060显卡,Nvidia官方驱动会报跟Win不兼容,查看硬件id,是一个官方驱动中没有的SUBSYS:
说明:SUBSYS 代表的是显卡的子系统供应商和特定配置(通常包括具体的显卡型号和制造商的定制信息)。如果这个ID在NVIDIA的官方列表中找不到,可能是因为该显卡是某个OEM(原始设备制造商)的特别版本,或者是一个非常新的产品,或者是所谓的山寨魔改版本。
最终我是用驱动总裁来完成显卡驱动更新的。
从显卡驱动的数字签名、驱动日期等信息判断我这个是个山寨魔改的3060显卡。
非官方下载的Nvidia驱动中也才有这个驱动,比如:
https://www.driverscloud.com/en/services/GetInformationDriver/76270-0/nvidia-56070-desktop-win10-win11-64bit-international-dch-whqlexe
CUDA
注意,最新版本的PyTorch需要的CUDA版本不是最新的,我们不能安装最新的CUDA。
https://pytorch.org/get-started/locally/
所以我们不能直接下载最新版本的CUDA:
https://developer.nvidia.com/cuda-downloads
而是下载之前版本的:
https://developer.nvidia.com/cuda-toolkit-archive
从上面链接找到12.1版本的CUDA下载。
下载,完成安装后,重启后,可以用下面命令查看
# 显示 CUDA 编译器驱动的版本信息
nvcc -V
默认情况下,CUDA 安装在 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA
目录下。
开发环境搭建
Miniconda3 提供了一个最小化的安装器,只包含 Conda(一个包和环境管理器)和 Python。这种设置允许用户自己选择安装所需的额外库,从而节省空间并避免安装不必要的包。
下载地址:
https://docs.anaconda.com/miniconda/miniconda-install/
默认会安装在下面目录:
c:\ProgramData\miniconda3
注意要把这个对应的执行目录c:\ProgramData\miniconda3\condabin
放入PATH环境变量中,方便使用。
安装完成后,就是搭建环境:
conda create -n pg python=3.12
conda activate pg
conda install pip
PyTorch
按照CUDA版本和环境选择出现的安装命令安装。
https://pytorch.org/get-started/locally/
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
演示代码
导入依赖库
pip install transformers
pip install Pillow requests
- transformers:用于加载和使用预训练的模型和处理器。
- requests:用于从网络获取图像。
- Pillow:用于图像处理。
下面演示了,结合图像和文本提示来生成相关的答案代码。
from transformers import AutoProcessor, PaliGemmaForConditionalGeneration,AutoConfig
import requests
from PIL import Image
access_token="your_huggingface_access_token" # 替换为你的访问令牌
model_id = "google/paligemma-3b-mix-224"
# 加载预训练的模型和相应的处理器
model = PaliGemmaForConditionalGeneration.from_pretrained(model_id,token=access_token)
processor = AutoProcessor.from_pretrained(model_id,token=access_token)
prompt = "What is on the flower?"
image_file = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/bee.jpg?download=true"
raw_image = Image.open(requests.get(image_file, stream=True).raw)
inputs = processor(prompt, raw_image, return_tensors="pt")
# max_new_tokens参数限制生成的最大新词数量。
output = model.generate(**inputs, max_new_tokens=20)
# skip_special_tokens=True参数用于在输出中去掉特殊令牌。
# [len(prompt):]这部分代码意在去除输出中与输入提示相同的部分,只显示模型生成的答案。
print(processor.decode(output[0], skip_special_tokens=True)[len(prompt):])
# bee
总结
从上面代码我们可以看出,PaliGemma不仅能够理解图像本身的视觉信息,还能结合相关的文本描述,提供更加丰富和精准的数据解读。
这种能力使其在各种应用场景中都显得非常有用,比如在自动化客服、智能教育、以及内容创作等领域。通过有效地结合视觉和语言信息,PaliGemma能够提供更为细致和深入的互动体验,极大地拓宽了人工智能在日常生活中的应用范围。
标签:本地,Win,token,PaliGemma,CUDA,https,驱动,显卡 From: https://www.cnblogs.com/ghj1976/p/18320023/win-ben-de-yun-xingpaligemma