在 WSL2 上部署 PyTorch

2023-10-27

开发项目需要使用AI,但是我习惯用 VMware 来开发各类项目,于是查到《Enable NVIDIA CUDA on WSL》可以实现 CUDA + VGPU 的功能。但是国内对这类资料较少,我就想顺便补个空白——在 WSL2 上部署 PyTorch。

前提

AI开发的工作者无非两种:

  1. 在 Ubuntu 或 Debian 上直接用Nouveau部署带 CUDA 的AI框架;
  2. 直接在 Windows 上用 Nvidia 官方的驱动,部署带CUDA的AI框架;

第一种方法,2019年我尝试过安装 Nvidia 的驱动,除了 Ubuntu 支持的最佳,其他发行版也就一般,希望这些社区能努力一下(我当时为14年的笔记本尝试各种发行版的安装测试),即使今年 Nvidia 突然声称为 Linux 搞官方驱动。第二种方法,虽然安装驱动方便多了,但是 Windows 一般用 MSVC,而多数AI框架都是基于 GCC 开发的。当然也可以用 MinGWcygwin 来实现 Windows 下的 GCC。

作为一个有洁癖的开发工程师,我一般都是在 VM 中开发的,优缺点懂得都懂。有些习惯就像“On your left”改不了了。VMware 只有 ESXI 支持 V-Gpu; VirtualBox 据我所知没有显卡直通,有也是 Intel 集显。这里非常感谢微软,在致力于拥抱 Docker 的时候,还开发了 WSL2。毕竟之前就发布过 Hyper-V,但是我觉得 WSL 相比于 Hyper-V 更加轻量,且对于 Windows 的资源整合度更高,可以在PS上直接调用 WSL 的 Bash。

安装 WSL2

Step 1 更新Windows 10 21H2

Step 2 启用 WSL2

Windows 10

  • x64系统需要Version 1903,Build 18362
  • ARM64需要Version 2004,Build 19041
    或者Windows 11

旧版:

升级后还需要进行一些配置才可以使用 WSL2,首先要启用 Windows 子系统功能,使用管理员权限打开一个 PowerShell 窗口,输入以下命令,并重启系统:

> dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

重启后,Windows 默认启用的是 WSL1,还需要再启用虚拟机平台功能,在 PowerShell 中输入以下命令,并再次重启系统:

> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

重启后,在 PowerShell 中输入以下命令,将 WSL 默认版本改为 WSL2:

> wsl --set-default-version 2

新版:

直接执行 wsl --install

确认控制面板的启动或关闭 Windows 功能

Linux 的发行版可以在 Microsoft Store中下载。推荐Ubuntu

Step 3 检查安装成功

方法一:

> wsl -t -v

方法二:

> bash

安装miniconda

进入Ubuntu, 更新系统

$ sudo apt-get update
$ sudo apt-get upgrade

下载miniconda

$ wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
$ chmod +x Miniconda3-latest-Linux-x86_64.sh
$ ./Miniconda3-latest-Linux-x86_64.sh

更新conda

$ conda update conda

创建python的虚拟环境, 目前PyTorch支持到3.9

$ conda create -n python3.9 python=3.9

安装Nvidia驱动

官网上下载,WSL上可以不必安装其他Nvidia驱动。

安装PyTorch

按照PyTorch官网提供的pip命令下载太慢。直接在 https://download.pytorch.org/whl/torch_stable.html下载

在这里插入图片描述

注意:CU116是CUDA 11.6;CP3.9是python3.9

pip安装

$ pip3 install ./torch-1.12.1+cu116-cp39-cp39-linux_x86_64.whl
$ pip3 install torch===1.12.1 torchvision torchaudio -f https://download.pytorch.org/whl/torch_stable.html

测试代码

import torch

if __name__ == '__main__':
    print(torch.__version__)
    print(torch.cuda.is_available())

结语

这种方式主要适合AI开发环境,而生产环境还是应该用Linux环境。一般云计算服务厂商都帮我们直接部署好了。当然有条件的也可以用Mac OSX + AMD显卡。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 WSL2 上部署 PyTorch 的相关文章

随机推荐

  • impdp或expdp报错ORA-39002: invalid operation,ORA-39070: Unable to open the log file

    oracle oracle rac01 backup cat expdp par USERID as sysdba DIRECTORY KMDATA EXP job name jinky exp filesize 5000m paralle
  • Java集合——Iterable和Iterator接口介绍

    Iterable Iterable和Iterator是什么 Iterable源码 Iterator源码 使用 Iterable和Iterator是什么 Iterable是Collection的实现接口 即是集合的最顶级父类 Iterator
  • 小白学股票基金_2

    到底是买股票还是买基金 说基金和股票差不多指的应该是偏股型基金 但是基金里面还有债券型 QDII以及非常大众化的货币型基金 众所周知的余额宝就是一款货币型基金啦 等等 风险等级也不一样 所以 为防止这样混为一谈 我们这里讨论的就是炒股和买偏
  • 0.0 Windows + Linux(Ubuntu20.04) 超简单的双系统安装

    目录 一 U盘启动盘的制作 1 下载操作系统 2 下载U启动制作工具 二 磁盘分配 三 Ubuntu20 04系统安装 1 修改bios为U启动 2 安装配置Ubuntu 2 1 Install Ubuntu 2 2 安装关键之处在于分区
  • 4年经验来面试20K的测试岗,连基础都不会,还不如招应届生!

    公司前段时间缺人 也面了不少测试 结果竟然没有一个合适的 一开始瞄准的就是中级的水准 也没指望来大牛 提供的薪资在10 20k 面试的人很多 但平均水平很让人失望 看简历很多都是3 4年工作经验 但面试中 不提工具和编程 仅仅基础的技术很多
  • Flink简单教学5-时间

    时间 Time Flink支持三种不同的时间 处理时间 processing time 指当前操作的时间 如 map 当程序以处理时间运行 所有基于时间的操作 窗口 都依赖各个operator的机器时间 事件时间 event time 事件
  • office 2010 projectn visio 下载

    Office 2010 project专业版 64位 ed2k file cn project professional 2010 x64 515551 exe 453437272 84D14496F889767D46C9DE576154B
  • 矩阵的基本演算

    目录 转置 逆 迹 行列式 转置 A B T
  • 网易低代码引擎Tango正式开源

    一 Tango简介 Tango 是一个用于快速构建低代码平台的低代码设计器框架 借助 Tango 只需要数行代码就可以完成一个基本的低代码平台前端系统的搭建 Tango 低代码设计器直接读取前端项目的源代码 并以源代码为中心 执行和渲染前端
  • element ui Tag 动态添加标签

    1 首先调接口获取到标签列表 级联选择器如果选择的不是第三级菜单 async getParamsData if this selectedCateKeys length 3 级联选择器不会有参数 下面的面板也都为空 this selecte
  • 三层架构到DDD四层架构演进

    应用架构演化 三层架构 三层架构 为什么还画了一层 Model 呢 因为 Model 只是简单的 Java Bean 里面只有数据库表对应的属性 有的应用会将其单独拎出来作为一个 但实际上可以合并到 DAO 层 第一步 数据模型与DAO层合
  • 检测是否为快乐数

    编写一个算法来判断一个数 n 是不是快乐数 快乐数 定义为 1 对于一个正整数 每一次将该数替换为它每个位置上的数字的平方和 2 然后重复这个过程直到这个数变为 1 也可能是 无限循环 但始终变不到 1 3 如果可以变为1 那么这个数就是快
  • MySQL类型定义 - 字符串类型

    1 char类型 1 CHAR类型和VARCHAR类型 CHAR类型和VARCHAR类型都在创建表时指定了最大长度 其基本形式如下 字符串类型 M 其中 字符串类型 参数指定了数据类型为CHAR类型还是VARCHAR类型 M参数指定了该字符
  • 数据结构 —七大排序算法(图文详细版)

    文章目录 前言 一 插入排序 1 直接插入排序 1 原理 2 实现 3 稳定性 时间复杂度 2 希尔排序 1 原理 2 具体实现 3 稳定性 时间复杂度 二 选择排序 1 直接选择排序 1 原理 2 具体实现 3 稳定性 时间复杂度 4 优
  • chromebook刷_使用Chromebook编码

    chromebook刷 Chromebooks are awesome They re relatively simple and inexpensive devices that run Chrome OS a stripped down
  • 【linux】基本工具gcc/g++及Makefile

    文章目录 一 程序翻译过程 1 程序的翻译过程 2 理解选项的含义 3 动态链接与静态链接 二 Linux项目自动化构建工具 make Make le 1 背景 2 实例说明 3 原理 4 语法 5 为什么gcc不更新文件 6 推导规则 三
  • eclipse svn 忽略文件夹

    以忽略 target 文件夹为例 window gt preferences gt team gt Ignored Resource gt Add Pattern gt 新建一个 target gt ok 再次同步可见traget下所有文件
  • 2023华为OD机试真题Java实现【食堂供餐/二分法】

    题目内容 某公司员工食堂以盒饭方式供餐 为将员工取餐排队时间降低为0 食堂的供餐速度必须要足够快 现在需要根据以往员工取餐的统计信息 计算出一个刚好能达成排队时间为0的最低供餐速度 即 食堂在每个单位时间内必须至少做出多少份盒饭才能满足要求
  • 假如让你来设计SSL/TLS协议

    前言 说起网络通信协议 相信大家对 TCP 和 HTTP 都很熟悉 它们可以说是当今互联网通信的基石 但是 在网络安全方面 它们却是有着很大安全风险 窃听风险 第三方攻击者可以随意窃听通信内容 比如获取支付账号密码 冒充风险 第三方攻击者可
  • 在 WSL2 上部署 PyTorch

    开发项目需要使用AI 但是我习惯用 VMware 来开发各类项目 于是查到 Enable NVIDIA CUDA on WSL 可以实现 CUDA VGPU 的功能 但是国内对这类资料较少 我就想顺便补个空白 在 WSL2 上部署 PyTo