CLIP部署:在Ubuntu配置环境

news2024/12/24 8:25:46

前置背景:

        需求是把CLIP模型在实验室Ubuntu服务器上配置环境,有一个老师给的账号和密码,用mobaXterm可以连接上服务器。

        首先,需要在自己的文件夹里面下载Anaconda,因为我的账户里面别人已经下过了,所以,这一步不讲解过程。

        文章主要讲如何在Ubuntu服务器上,且已经下载过Anaconda的情况下,创建自己的Python虚拟环境,涉及如何选择Python编译器的版本、Pytorch的版本、CUDA的版本,才能保证Python+Pytorch+CUDA+服务器显卡驱动版本适配。

一.在服务器上安装Anaconda

        这个如何安装我不讲了,网上资料很多,装好了之后会有anaconda3文件夹,文件如下。

二、如何在服务器上创建自己的Python虚拟环境

1.envs文件夹

        先说上面的envs文件夹作用,里面放的就是已经创建好的所有虚拟环境,因为服务器环境是大家一起用的,里面的文件夹都是别人已经创建好的环境。如果你创建了自己的虚拟环境,这个文件夹里面会更新哦。

2.创建自己的虚拟环境 

        下面是我的执行命令(我用的第二个指定了Python版本),CLIP是自定义的虚拟环境名。如果用第一个不指定版本,我的服务器好像会自动在Anaconda里面选最新的Python版本3.12.3,但是这个版本太新了不适配我其他的环境,下面会讲清楚,关于如何判断我要选择哪个版本的Python创建虚拟环境。

conda create --name CLIP python
conda create --name CLIP python=3.11.4

 3.如何选择虚拟环境的Python版本

        先说原理,Python版本+Pytorch版本+CUDA Runtime+CUDA driver版本是统一的,如果不适配后面会有问题。下面我说一下这几个的版本要如何统一确定下来。

        查看服务器的显卡驱动版本

nvidia-smi

        输入上面的命令,显示如下,说明我的CUDA driver版本是12.4。

        因此,我的CUDA Runtime需要比CUDA driver版本的12.4低一点点,这样不容易出错。我选了12.1。如何找到该版本的安装CUDA Runtime环境的命令链接如下。

Start Locally | PyTorch 进入PyTorch网页会有这个图,点击红框。

        点击红框后,会显示如下界面。然后在Conda下面,找到Linux的CUDA12.1版本的命令就行。

         特别看到,里面有pytorch=2.2.2,看到这个才能确定我们的 Python版本。

# CUDA 12.1
conda install pytorch==2.2.2 torchvision==0.17.2 torchaudio==2.2.2 pytorch-cuda=12.1 -c pytorch -c nvidia

        最后,进入网站https://github.com/pytorch/vision#installation,就能看到torch对应的Python版本了。

4.正式安装步骤

        上面讲了如何确定你的各种版本。总结而言,就是先看服务器的显卡CUDA驱动,我是12.4,导致我的CUDA Runtime版本就要比他小一点点,我选了12.1,再导致我的Pytorch版本是2.2.2,最后导致我的Python版本在3.8-3.11。

        下面就直接写每一步的安装步骤命令和运行结果了。

(1)创建指定Python版本的虚拟环境

        我选了3.11.4,其实只要是3.8-3.11都行(ps:运行下面的命令之前可以输入conda search python,查看Anaconda所有的Python环境,确保你指定的版本在Anaconda里面有,一般都有)

conda create --name CLIP python=3.11.4

(2)激活虚拟环境

conda activate CLIP

(3)在虚拟环境内,安装指定版本的CUDA runtime和Pytorch

conda install pytorch==2.2.2 torchvision==0.17.2 torchaudio==2.2.2 pytorch-cuda=12.1 -c pytorch -c nvidia

(4)在虚拟环境内,安装三个要用的第三方库

pip install ftfy regex tqdm --default-timeout=100 -i https://pypi.tuna.tsinghua.edu.cn/simple

(5)进入CLIP-main文件夹(有 setup.py文件)进行最后一步安装

        一定要进入CLIP-main文件夹哦。

python3 setup.py build install

        到这里,CLIP的环境就搭建好了,下面开始测试喽。

三、测试

1.进入CLIP-main/tests文件夹

 2.跑项目自带的测试文件test_consistency.py

        要安装pytest之后,才能跑test_consistency.py文件

        用下面的命令测试,-s不加也行,就是如果在文件里自己加一些print语句希望看看程序执行到哪看不见,最好加上。

conda install pytest
pytest -s test_consistency.py 

PS:这个测试跑的很慢,因为里面把CLIP所有模型文件都要加载,2小时起步。建议可以先跑一个小的Demo,看看环境是不是好了,直接见第三步。

        如果这跑这个pytest的文件,大概运行界面如下,py后面的绿色框框里会有.....输出,一个点代表一个模型运行成功了,大概输出到九个点就结束了,因为要load九个模型。

        最后跑完的结果如下,还有3个waring,不过九个模型的passed就问题不大,说明成功了。

3.跑自己写的测试文件mytest.py

import torch
import clip
from PIL import Image
 
device = "cuda" if torch.cuda.is_available() else "cpu"
model, preprocess = clip.load("ViT-B/16", device=device)
#model, preprocess = clip.load("ViT-L/14", device=device)
 
image = preprocess(Image.open("CLIP.png")).unsqueeze(0).to(device)
text = clip.tokenize(["a diagram", "a dog", "a cat"]).to(device)
 
with torch.no_grad():
    image_features = model.encode_image(image)
    text_features = model.encode_text(text)
 
    logits_per_image, logits_per_text = model(image, text)
    probs = logits_per_image.softmax(dim=-1).cpu().numpy()
 
print("Label probs:", probs)  

        这个py文件放的位置如下。把上面的代码复制进去就行。

        然后,运行如下命令,测试文件,

python mytest.py
#conda deactivate(退出虚拟环境)

         运行结果如下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1707257.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue3项目练习详细步骤(第一部分:项目构建,登录注册页面)

项目环境准备 工程创建 安装依赖 项目调整 注册功能 页面结构 接口文档 数据绑定和校验 数据接口调用 解决跨域问题 登录功能 接口文档 数据绑定和校验 数据接口调用 优化登录/注册成功提示框 项目演示 项目的后端接口参考:https://blog.csdn.net/daf…

太阳能语音监控杆(球机LED款)有什么用

传统监控设备依赖电力支持,在偏远地区和没有网络地区难以发挥其作用,而鼎跃安全的太阳能语音监控杆(球机LED款)在传统监控基础上,进行了全面优化,解决了无电无网区域使用受限的问题。 太阳能语音监控杆&am…

Postgresql源码(134)优化器针对volatile函数的排序优化分析

相关 《Postgresql源码(133)优化器动态规划生成连接路径的实例分析》 上一篇对路径的生成进行了分析,通过make_one_rel最终拿到了一个带着路径的RelOptInfo。本篇针对带volatile函数的排序场景继续分析subquery_planner的后续流程。 subquer…

LeetCode题练习与总结:有序链表转换二叉搜索树--109

一、题目描述 给定一个单链表的头节点 head ,其中的元素 按升序排序 ,将其转换为平衡二叉搜索树。 示例 1: 输入: head [-10,-3,0,5,9] 输出: [0,-3,9,-10,null,5] 解释: 一个可能的答案是[0,-3,9,-10,null,5],它表…

eBPF可观测之网络流量控制和管理traffic control浅尝

目录 工程背景 环境准备 安装工具​​​ 安装依赖包 安装C依赖库 操作步骤 目录结构 代码展示 效果展示 拓展提升 工程背景 首先发表一个"暴论" eBPF在可观测方面的应用,就是各种google。 不需要学习内核,只要掌握ebpf开发套路。…

3D应用开发工具HOOPS如何优化复杂3D大模型的实时渲染和交互?

在现代工程设计、仿真和可视化领域,处理和交互大型三维模型(3D Models)的需求日益增加。随着模型复杂度和数据量的增长,如何有效地管理和实时操作这些模型成为了一个关键挑战。HOOPS技术以其卓越的速度和效率,成为了应…

java项目——图书管理系统

文章目录 前言图书管理系统整体框架:book包user包Main包:iooperation包总结: 前言 针对这些天所学的javaSE的知识,用一个小项目来实践一下。 图书管理系统 整体框架: 采取面向对象的思想实现此项目,首先…

SALOME源码分析:MDF框架

SALOME是由EDF、CEA、Open CASCADE等联合开发的开源CAE集成平台。 作为一款开源CAE软件集成平台,SALOME以其现代化的架构设计、良好的扩展性,提供了几何建模、网格生成、数据同化、求解器调用、后处理可视化、流程管理、作业管理等方面的支持。而这一切…

Shell编程中的循环语句和函数

一、for循环语句 当面对各种列表重复任务时,使用简单的if语句已经难以满足需求,这时就需要for循环语句。for语句的结构为: for 变量 in 取值列表 do 命令序列 done 使用for循环语句时,需要指定一个变量及取值列表,针对…

B站pink老师HTML5基础(一)

文章目录 一、网页1.什么是网页2.什么是HTML二、常用浏览器 三、Web标准四、HTML标签1.HTML基本结构标签 五、快捷键六、常用标签1.标题标签2.段落和换行标签3.文本格式化标签4.div标签和span标签5.图像标签6.图像路径7.超链接标签8.特殊字符 一、网页 1.什么是网页 2.什么是H…

【Postman接口测试】第二节.Postman界面功能介绍(上)

文章目录 前言一、Postman前言介绍二、Postman界面导航说明三、使用Postman发送第一个请求四、Postman 基础功能介绍 4.1 常见类型的接口请求 4.1.1 查询参数的接口请求 4.1.2 表单类型的接口请求 4.1.3 上传文件的表单请求 4.1.4 JSON 类…

New Phytologist:杨树特有miRNA在调控杨树抗旱中的分子机制

2024年3月6日,林木遗传育种全国重点实验室、北京林业大学生物科学与技术学院尹伟伦与夏新莉教授课题组在New Phytologist(中科院一区,影响因子9.4)期刊发表了题为“The miR6445-NAC029 module regulates drought tolerance by reg…

iec61850通信协议是什么

EC 61850是国际电工委员会(IEC)制定的一个用于电力系统自动化的国际标准。该协议广泛应用于变电站自动化、配电网自动化和智能电网等领域,旨在实现不同设备和系统之间的互操作性和高效通信。本文将详细介绍IEC 61850通信协议的特点、架构、关…

N进制计数器【02】

大容量N进制计数器 集成计数器容量的扩展 集成计数器级联扩展容量 【例1】由两片 74LS161 级联组成 256 进制(8位二进制)同步加法计数器 【解】级联时,外加时钟信号同时接到各片计数器的时钟输入端,用前级计数器的进位输出 C…

使用ssh连接ubuntu

一、下载连接工具 常见的连接工具右fianlshell、xshell等等。在本文章中使用的finalshell,工具可以去官网上下载,官网下载。 二、Ubuntu中配置shh 1、使用下面指令更新软件包(常用于下载安装或更新软件时使用,更新到最新的安装…

如何取消公众号的在线客服绑定授权

1,功能设置 2,公众号设置 3,查看详情,取消

Excel表格保护密码遗忘怎么办?三秒钟破解密码,轻松解锁!

在我们的日常工作中,Excel表格是一个非常实用的工具,但在某些情况下,我们可能会遇到密码忘记的问题,或者在尝试打开或删除文件时被锁定。别担心,这里有三个简单的解决方法来帮助您解决问题。 一、尝试默认密码或常见密…

香橙派 AIpro 昇腾 Ascend C++ 分类模型适配

香橙派 AIpro 昇腾 Ascend C 分类模型适配 flyfish 文章目录 香橙派 AIpro 昇腾 Ascend C 分类模型适配前言一、PyTorch官网resnet模型处理方式1、PyTorch模型 导出 onnx格式2、完整测试 输出top1结果3、完整测试 输出top5结果 二、YOLOv8官网resnet模型Python处理方式三、昇腾…

摸鱼大数据——Hive表操作——分区表

1、介绍 特点: 分区表会在HDFS上产生目录。查询数据的时候使用分区字段筛选数据,可以避免全表扫描,从而提升查询效率 注意: 如果是分区表,在查询数据的时候,如果没有使用分区字段,它回去进行全表扫描,会降低…

【哈希】闭散列的线性探测和开散列的哈希桶解决哈希冲突(C++两种方法模拟实现哈希表)(1)

🎉博主首页: 有趣的中国人 🎉专栏首页: C进阶 🎉其它专栏: C初阶 | Linux | 初阶数据结构 小伙伴们大家好,本片文章将会讲解 哈希函数与哈希 之 闭散列的线性探测解决哈希冲突 的相关内容。 如…