内网windows搭建基于ubuntu的深度学习开发框架

背景:内网为windows操作系统,而当前深度学习框架pytorch及在此之上构建的多个开源框架均是基于linux操作系统。本篇解决以下问题:基于windows wsl安装ubuntu;ubuntu安装显卡开发包cuda;构建便于内外网迁移的python开发环境anaconda;基于wsl的vscode跨平台开发环境构建。

一、基于windows wsl安装ubuntu

1、关于WSL:适用于Linux的Windows子系统(英语:Windows Subsystem for Linux,简称WSL)是一个为在Windows 10和Windows Server 2019以上能够原生运行Linux二进制可执行文件(ELF格式)的兼容层。目前包含两个版本:

WSL1提供了一个由微软开发的Linux兼容的内核接口(不包含Linux内核代码),然后可以在其上运行GNU用户空间,例如Ubuntu,openSUSE,SUSE Linux Enterprise Server,Debian和Kali Linux。这样的用户空间可能包含Bash shell和命令语言,使用本机GNU/Linux命令行工具(sed,awk等),编程语言解释器(Ruby,Python等),甚至是图形应用程序(使用主机端的X窗口系统)。

WSL2基于Hyper-V技术,运行多个带有GNU/Linux镜像的虚拟机,同样可以实现WSL1的大多数功能,但拥有完整的Linux内核与对Systemd的支持。

2、开启WSL,更新WSL2,安装ubuntu

1)、开启:以管理员身份运行Windows PowerShell;输入命令:dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart;等待功能启用完成即可。此项功能windows原生支持,不需要外网。

2)、更新:在外网机器https://github.com/microsoft/WSL/releases下载较新版本更新安装包,例如:wsl.2.4.13.0.x64.msi,拷贝到内网安装更新到WSL2

3)、安装ubuntu:在外网机器https://wslstorestorage.blob.core.windows.net/wslblob/Ubuntu2204-221101.AppxBundle页面Ubuntu 22.04.5 LTS (Jammy Jellyfish) ,后缀改为rar,解压后选择x64版本,拷贝到内网安装。

3、WSL及ubuntu相关知识

查看wsl版本:
wsl --version
查看wsl上已安装的所有发行版本
wsl --list --verbose

安装ubuntu后,windows资源管理器会出现linux图标,可以据此查看ubuntu的文件系统。home文件夹下面有初始化时创建的用户,mnt对应windows文件系统。

windows搜索框输入ubuntu,运行app,出现ubuntu shell,可运行各中ubuntu命令

二、安装ubuntu的cuda开发包

为提高深度学习效率,英伟达显卡需安装对应显卡的驱动和cuda包

1)、安装gcc

安装cuda需要gcc环境,gcc离线安装见build-essential 离线安装 - 知乎

2)、安装显卡驱动

硬件属性查看离线机器显卡型号
联网机器https://www.nvidia.cn/geforce/drivers/手动搜索驱动
输入该型号,操作系统选linux64,下载对应版本的run文件如NVIDIA-Linux-x86_64-565.77.run
拷贝到离线linus系统路径下,运行:
sudo sh NVIDIA-Linux-x86_64-565.77.run

3)、安装cuda

l离线机器inux命令行:nvidia-smi ,查看显卡支持的cuda
NVIDIA-SMI 560.35.02 Driver Version: 560.94 CUDA Version: 12.6
联网机器https://developer.nvidia.com/cuda-toolkit-archive选择cuda版本下载如cuda_12.6.0_560.28.03_linux.run
拷贝到离线linus系统路径下,linux命令行运行:
sudo sh cuda_12.6.0_560.28.03_linux.run

4)设置环境变量

搜索框输入ubuntu运行Ubuntu app,默认进入当前用户文件夹,用vim命令编辑 .bashrc文件:
vim .bashrc(文本编辑系统资源文件)
i (插入),插入以下两行:
export LD_LIBRARY_PATH=/usr/local/cuda-12.6/lib
export PATH=$PATH:/usr/local/cuda-12.6/bin
esc,:qw(退出并写入)
命令行运行:source .baserc(使以上更改生效)

5)、查看安装成功与否:
nvcc --version

三、安装anaconda,构建虚拟环境并迁移到内网

1)、外网机器下载Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror,选择对应版本如Anaconda3-2024.10-1-Linux-x86_64.sh。

2)、ubuntu命令行运行sh Anaconda3-2024.10-1-Linux-x86_64.sh

3)、设置环境变量(见二4)

export PATH="$HOME/anaconda3/bin:$PATH"

4)、创建并激活虚拟环境

conda create --name DeepLearning
conda activate DeepLearning

5)、使用conda或pip命令下载所需的包

先按4)激活虚拟环境,再安装所需的相关包,如:

conda install pytorch torchvision -c pytorch

pip install torchgeo

pip install rastervision

6)、conda DeepLearning虚拟环境迁移内网

cd ~/anaconda3/envs
压缩:
tar -czvf DeepLearning.tar.gz DeepLearning
拷贝到内网~/anaconda3/envs目录
解压缩:
tar -zxvf DeepLearning.tar.gz

这样,内网机器与外网机器具有完全相同的开发环境。

四、基于wsl的vscode跨平台开发环境构建

1)、插件离线安装

外网vscode插件管理器下载wsl和python插件,所有插件位置:C:\Users\<当前用户>\.vscode\extensions,压缩并拷贝到内网,找到对应位置覆盖

2)、内网vscode server安装

内网vscode查询vscode id :help->about查询vscode id:如:91fbdddc47bc9c09064bf7acf133d22631cbf083

外网下载vscode-server-linux-x64.tar.gz:(注意commit:后修改为该id)
https://update.code.visualstudio.com/commit:91fbdddc47bc9c09064bf7acf133d22631cbf083/server-linux-x64/stable
拷贝到内网,ubuntu命令行:
cd ~/.vscode-server/bin/
mkdir 91fbdddc47bc9c09064bf7acf133d22631cbf083
tar zxvf vscode-server-linux-x64.tar.gz -C ~/.vscode-server/bin/91fbdddc47bc9c09064bf7acf133d22631cbf083 --strip 1
touch ~/.vscode-server/bin/91fbdddc47bc9c09064bf7acf133d22631cbf083/0

3)、vscode远程连接ubuntu

打开vscode,点击左下角,选择connect to wsl,点击右下角选择DeepLearning虚拟环境解释器,这样便可实现远程python开发

4)、测试

import torch
flag = torch.cuda.is_available()
print(flag)

五、附录

1)、ubuntu系统使用clash proxy

vim ~/.bashrc (编辑系统环境变量)
-i(插入模式)
#<<< using proxy,clash port 7890 and turn on allow-lan
host_ip=$(cat /etc/resolv.conf |grep "nameserver" |cut -f 2 -d " ")
export http_proxy="http://$host_ip:7890"
export https_proxy="http://$host_ip:7890"
#<<<using proxy
esc(回命令行)
:qw(退出并保存)

wsl启用后,会建立虚拟网卡,以上配置获取的ip即为此虚拟网卡地址

描述: Hyper-V Virtual Ethernet Adapter
物理地址: ‎00-15-5D-83-CC-66
已启用 DHCP: 否
IPv4 地址: 172.18.128.1
IPv4 子网掩码: 255.255.240.0
IPv4 默认网关:
IPv4 DNS 服务器:
IPv4 WINS 服务器:
已启用 NetBIOS over Tcpip: 是
连接-本地 IPv6 地址: fe80::609f:edef:bfe5:b0ef%22
IPv6 默认网关:
IPv6 DNS 服务器: fec0:0:0:ffff::1%1, fec0:0:0:ffff::2%1, fec0:0:0:ffff::3%1

**************注:clash启动后,要开启general的allow lan功能**************************

 2)、深度学习相关资源

satellite-image-deep-learning set:GitHub - satellite-image-deep-learning/software: Software for working with satellite & aerial imagery ML datasets

torchgeo framework:GitHub - microsoft/torchgeo: TorchGeo: datasets, samplers, transforms, and pre-trained models for geospatial data

raster-vision framework:GitHub - azavea/raster-vision: An open source library and framework for deep learning on satellite and aerial imagery.

pytorch  document:https://docs.pytorch.org/docs/stable/index.html

Learn PyTorch for Deep Learning: Zero to Mastery book:https://www.learnpytorch.io/

Practical Deep Learning for Coders:https://course.fast.ai/

 

 

 

 

 

posted @ 2025-05-12 17:49  jwwry  阅读(201)  评论(0)    收藏  举报