Skip to main content

使用SSH快速连接(邪修)

本节预计完成时间:5min

本节将会介绍如何通过SSH连接workshop,完成GPU调用。

❗️注意:此方法启动的workshop启动完成即对GPU计费,必须手动停止workshop后才会停止计费。当然停止workshop后您在workshop中运行的训练任务也会同时终止。

使用GPU启动workshop

  1. 在VSCode上选择左下角的“管理”图标,选择“设置”,在设置中找到扩展下的Aladdin Settings,勾选workshop GPU。

    install1

    install1

  2. 在AladdinEdu插件里创建工作台,资源类型选择GPU,选择您需要调用的GPU数量与卡型,完成workshop的创建,等待创建成功后可直接关闭新弹出的窗口。

    install1

    install1

❗️注意:再次提醒,按此方法启动的workshop将会在启动完成即对GPU计费,必须手动停止workshop后才会停止计费。

获取SSH连接命令

点击“复制SSH连接”按钮,复制已经创建好的SSH连接指令。

install1

注:目前采用的是本地私钥连接,即在您更换设备后,需要重新点击按钮获取新指令。

通过SSH运行Demo

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

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

    ssh9

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

    ssh10

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

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