Skip to main content

传统开发模式快速开始

本节将会介绍如何通过传统开发模式进行远程开发,完成GPU调用。

注意

此方法启动的workshop启动完成即对GPU计费,必须手动停止workshop后才会停止计费。
停止workshop后您在workshop中运行的训练任务也会同时终止,同理,只要不停止workshop,您的训练任务就不会停止,无需守护进程。

使用GPU新建workshop

  1. 在AladdinEdu控制台内创建工作台,选择集群分区、镜像:

    install1

  2. 接着,资源类型选择GPU,选择您需要调用的GPU数量与卡型,完成workshop的创建:

    install1

注意

再次提醒,使用了GPU启动的workshop将会在启动完成即对GPU计费,必须手动停止workshop后才会停止计费。

使用Terminal软件远程开发

本案例将使用Xterminal演示Demo的运行,MAC用户也可以使用自带终端进行连接。

  1. 创建成功后,点击“连接命令”后的复制按钮,复制已经创建好的SSH连接指令:

    install1

  2. 在新终端中粘贴ssh连接命令,回车:

    ssh9

  3. 接着复制登录密码,粘贴在终端内,密码粘贴后不会显示,直接回车即可:

    ssh9.5

提示

若输入密码后返回Permission denied, please try again.,可能是因为本地缺失公钥文件导致的,可按以下步骤解决:

ssh9.6

  1. 连接成功如下图所示,红框内为您连接workshop的id:

    ssh10

  2. 使用以下测试代码新建测试文件:

import torch
import time

def test_cuda_availability():
print("\n======= CUDA 测试 =======")
# 检查 CUDA 是否可用
cuda_available = torch.cuda.is_available()
print(f"PyTorch CUDA 可用: {'✅是' if cuda_available else '❌否'}")

if cuda_available:
# 打印 CUDA 版本和设备信息
print(f"PyTorch CUDA 版本: {torch.version.cuda}")
print(f"当前 GPU 设备: {torch.cuda.get_device_name(0)}")
print(f"GPU 数量: {torch.cuda.device_count()}")
else:
print("⚠️ 请检查 CUDA 和 PyTorch 是否安装正确!")
print("========================\n")

def test_gpu_speed():
print("\n======= GPU 速度测试 =======")
# 创建一个大型张量
x = torch.randn(10000, 10000)

# CPU 计算
start_time = time.time()
x_cpu = x * x
cpu_time = time.time() - start_time
print(f"CPU 计算时间: {cpu_time:.4f} 秒")

if torch.cuda.is_available():
# 移动到 GPU 计算
x_gpu = x.to('cuda')
start_time = time.time()
x_gpu = x_gpu * x_gpu
torch.cuda.synchronize() # 确保 GPU 计算完成
gpu_time = time.time() - start_time
print(f"GPU 计算时间: {gpu_time:.4f} 秒")
print(f"GPU 比 CPU 快: {cpu_time / gpu_time:.1f} 倍")
else:
print("⚠️ GPU 不可用,跳过测试")
print("==========================\n")

def test_training():
print("\n======= 简单训练测试 =======")
# 定义一个极简神经网络
model = torch.nn.Sequential(
torch.nn.Linear(10, 100),
torch.nn.ReLU(),
torch.nn.Linear(100, 1)
)

# 如果有 GPU,将模型和数据移到 GPU
device = 'cuda' if torch.cuda.is_available() else 'cpu'
model = model.to(device)
print(f"使用设备: {device.upper()}")

# 模拟数据
X = torch.randn(1000, 10).to(device)
y = torch.randn(1000, 1).to(device)

# 训练循环
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
start_time = time.time()
for epoch in range(5):
optimizer.zero_grad()
output = model(X)
loss = torch.nn.functional.mse_loss(output, y)
loss.backward()
optimizer.step()
print(f"Epoch {epoch + 1}, Loss: {loss.item():.4f}")

total_time = time.time() - start_time
print(f"总训练时间: {total_time:.2f} 秒")
print("==========================\n")

if __name__ == "__main__":
test_cuda_availability()
test_gpu_speed()
test_training()
  1. 使用python命令运行Demo,查看输出:

    ssh11

  2. 使用完成后,一定要关闭workshop,才会停止计费:

    ssh12

使用IDE进行远程开发

本案例将使用VSCode演示Demo的运行,也可以使用Pycharm等其他IDE进行连接。

  1. 打开您本地的VSCode开发插件菜单,在扩展程序中搜索Remote-SSH并安装: (如果您本地VSCode开发工具已安装Remote-SSH,可跳过此步骤。)

    ssh13

  2. 按照下图操作,添加ssh主机:

    ssh14

    ssh15

  3. 获取并复制您工作台的SSH登录信息,图示以ssh 83bmlomdyit6ke6n@60.171.65.44 -p 16001为例。回车键继续操作: ssh16

  4. 回车后会弹出以下自定义SSH config 文件的弹窗,不需要选择直接回车即可,然后点击连接:

    ssh17

    ssh18

  5. 输入密码,等待连接完成:

    ssh19

  6. 连接完成后,点击“打开文件夹”,打开/root目录:

    ssh20

  7. 可直接拖动小文件至资源管理器内,也可通过SFTP等工具上传,请参考文件传输

    ssh20