书生大模型实战营闯关 - 入门岛 - Linux

学习目标:

  • 掌握在InternStudio 使用远程开发机Linux环境的方法。

学习内容:

  1. 在平台建立开发机
  2. ssh连接设置
  3. 完成端口映射并运行`hello_world.py` 进入开发环境(闯关任务)
  4. 一些新学习的Linux指令
  5. test.sh shell 脚本编写

作业内容:

1. 在书生平台建立开发机

InternStudio平台提供了非常好的Linux实操环境供大家学习书生大模型.

进入平台, 点击左边进入开发机, 创建开发机:

然后点击"选择镜像", 选择 cuda12.2-conda 镜像, 点击"使用", 开发机就创建好了.

成功启动开发机后, 可以直接点"进入开发机", 进入可以直接采用JupyterLab, VSCode通过浏览器访问使用开发机.

2. SSH连接

通过上图所示命令行, 可以直接使用密码访问到开发机. 但更多时候, 我们希望用密钥远程访问开发机:

在合适位置生成自己电脑的密钥,一路默认, 暂定名字是key

ssh-keygen -t rsa

在*nix系统中记得要改变key的权限为本用户只读, 否则连接会失败.

可以在上述界面左上角的"添加公钥"直接添加, 或使用`ssh-copy-id` 将 key 复制到远程主机.

sudo chmod 400 key
ssh-copy-id -i Somewhere_on_my_machine/key.pub -p 48438 root@ssh.intern-ai.org.cn

3. 完成端口映射并运行`hello_world.py` 进入开发环境(闯关任务)

hello_world.py 获取我在InternStudio的用户id, 并制作用于分享的gradio海报.

import socket
import re
import gradio as gr
  

def get_hostname():
    hostname = socket.gethostname() 
    match = re.search(r'-(\d+)$', hostname) 
    name = match.group(1)    
 
    return name
 
 
 
 
with gr.Blocks(gr.themes.Soft()) as demo: 
    html_code = f"""
            <p align="center">
            <a href="https://intern-ai.org.cn/home">
                <img src="https://intern-ai.org.cn/assets/headerLogo-4ea34f23.svg" alt="Logo" width="20%" style="border-radius: 5px;">
            </a>
            </p>
            <h1 style="text-align: center;">☁️ Welcome {get_hostname()} user, welcome to the ShuSheng LLM Practical Camp Course!</h1>
            <h2 style="text-align: center;">😀 Let’s go on a journey through ShuSheng Island together.</h2>
            <p align="center">
                <a href="https://github.com/InternLM/Tutorial/blob/camp3">
                    <img src="https://oss.lingkongstudy.com.cn/blog/202406301604074.jpg" alt="Logo" width="20%" style="border-radius: 5px;">
                </a>
            </p>
            """ 
    gr.Markdown(html_code)
 
 
 
demo.launch()

在ssh中运行

python hello_world.py

目前gradio页面只在远端可以访问, 想要在本地访问进行端口映射:

得到gradio网页海报如下:

4. 一些新学习的Linux指令

在课程的学习中, 新学到了和gpu相关的一些指令:

1. 显示详细的 GPU 状态信息:

nvidia-smi -l 1

  这个命令会每1秒更新一次状态信息。
2. 显示 GPU 的帮助信息:

nvidia-smi -h

 3. 列出所有 GPU 并显示它们的 PID 和进程名称:

nvidia-smi pmon

4. 强制结束指定的 GPU 进程:

nvidia-smi --id=0 --ex_pid=12345

 这会强制结束 GPU ID 为 0 上的 PID 为 12345 的进程。

5. 设置 GPU 性能模式:

nvidia-smi -pm 1
nvidia-smi -i 0 -pm 1

 第一个命令会为所有 GPU 设置为性能模式,第二个命令只针对 ID 为 0 的 GPU设置为性能模式。
6. 重启 GPU:

nvidia-smi --id=0 -r

这会重启 ID 为 0 的 GPU。
 

5. test.sh shell 脚本编写

#!/bin/bash

# 定义导出环境的函数
export_env() {
    local env_name=$1
    echo "正在导出环境: $env_name"
    # 导出环境到当前目录下的env_name.yml文件
    conda env export -n "$env_name" > "$env_name.yml"
    echo "环境导出完成。"
}

# 定义还原环境的函数
restore_env() {
    local env_name=$1
    echo "正在还原环境: $env_name"
    # 从当前目录下的env_name.yml文件还原环境
    conda env create -n "$env_name" -f "$env_name.yml"
    echo "环境还原完成。"
}

# 检查是否有足够的参数
if [ $# -ne 2 ]; then
    echo "使用方法: $0 <操作> <环境名>"
    echo "操作可以是 'export' 或 'restore'"
    exit 1
fi

# 根据参数执行操作
case "$1" in
    export)
        export_env "$2"
        ;;
    restore)
        restore_env "$2"
        ;;
    *)
        echo "未知操作: $1"
        exit 1
        ;;
esac

保存该脚本并给予运行权限, 可以使用该脚本导出或恢复conda环境.

总结:

今夏最棒的大模型学习方式, 快来扫码参加书生大模型实战营:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值