先说一个阿里云学生无门槛免费领一年2核4g服务器的方法:
阿里云服务器学生无门槛免费领一年2核4g_阿里云学生认证免费服务器-CSDN博客
一、为什么选择服务器搭建深度学习服务?
- 灵活选型:支持NVIDIA A100/V100等GPU实例,按需付费。
- 开箱即用:预装CUDA、深度学习框架的官方镜像,节省配置时间。
- 成本优化:抢占式实例价格低至常规实例的10%,适合实验阶段。
- 生态完善:无缝集成OSS存储、PAI平台等AI工具链。
二、准备工作:创建GPU实例
Step 1:选择实例规格
- 登录阿里云控制台,进入ECS购买页。
- 推荐配置(按需调整):
- 实例类型:GPU计算型(如
ecs.gn7i-c8g1.2xlarge
,含1颗NVIDIA A10) - 镜像:选择“深度学习框架”官方镜像(如Ubuntu 24.04 + CUDA 12.2 + PyTorch 2.3)
- 存储:系统盘100GB(高效云盘),数据盘挂载500GB ESSD(存放数据集)
- 网络:分配公网IP(带宽按需选择,实验阶段1Mbps足够)
- 实例类型:GPU计算型(如
Step 2:配置安全组
- 开放必要端口:
- SSH:22(默认)
- Jupyter Notebook:8888
- TensorBoard:6006
- 自定义API服务:如5000、8000
Step 3:登录服务器
BASH
# 使用密钥对连接(替换为你的IP和密钥路径) ssh -i ~/.ssh/aliyun_key.pem root@<公网IP>
三、深度学习环境配置(手动版)
若未使用预装镜像,可手动安装环境:
1. 安装NVIDIA驱动与CUDA
BASH
# 检查GPU是否识别 lspci | grep -i nvidia # 安装驱动(以CUDA 12.2为例) wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-ubuntu2404.pin sudo mv cuda-ubuntu2404.pin /etc/apt/preferences.d/cuda-repository-pin-600 wget https://developer.download.nvidia.com/compute/cuda/12.2.2/local_installers/cuda-repo-ubuntu2404-12-2-local_12.2.2-535.104.05-1_amd64.deb sudo dpkg -i cuda-repo-ubuntu2404-12-2-local_12.2.2-535.104.05-1_amd64.deb sudo cp /var/cuda-repo-ubuntu2404-12-2-local/cuda-*-keyring.gpg /usr/share/keyrings/ sudo apt-get update sudo apt-get -y install cuda-toolkit-12-2
2. 安装cuDNN与PyTorch
BASH
# 下载cuDNN(需注册NVIDIA开发者账号) tar -xzvf cudnn-linux-x86_64-8.9.5.30_cuda12-archive.tar.xz sudo cp cudnn-*-include/* /usr/local/cuda/include/ sudo cp cudnn-*-lib/* /usr/local/cuda/lib64/ # 创建Python虚拟环境 conda create -n dl python=3.10 conda activate dl pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
四、部署深度学习服务
方案1:Jupyter Lab远程开发
BASH
# 安装Jupyter Lab pip install jupyterlab # 生成配置文件 jupyter lab --generate-config # 设置访问密码 jupyter lab password # 启动服务(后台运行) nohup jupyter lab --ip=0.0.0.0 --port=8888 --allow-root > jupyter.log 2>&1 &
- 访问:
http://<公网IP>:8888
,输入密码即可使用。
方案2:FastAPI部署推理API
PYTHON
# app.py from fastapi import FastAPI import torch from pydantic import BaseModel app = FastAPI() model = torch.load("model.pth").eval() class Request(BaseModel): input: list @app.post("/predict") def predict(request: Request): tensor = torch.tensor(request.input) with torch.no_grad(): output = model(tensor) return {"result": output.tolist()}