Ubuntu22.04 安装深度学习服务器全纪录

Ubuntu 22.04 安装深度学习服务器全纪录

制作启动盘

安装 Ubuntu 22.04

  • 将U盘插到服务器上,开机按F11键(具体什么键跟主板型号有关)选择启动项进入临时的 Ubuntu 系统,在图形界面中选择 Install Ubuntu ,所有配置都可以使用默认的,改一下用户名和密码即可。

  • 进入系统后设置一下root账户密码:

    sudo passwd root
    

    同时为了避免每次sudo都要输入密码,这里配置一下visudo:

    sudo visudo
    

    在文件最后加上一句( name 改为自己的用户名):

    name ALL=(ALL) NOPASSWD: ALL
    

重装 Ubuntu 22.04

  • 制作 Ubuntu 22.04 启动盘,操作如上。
  • 开机按F11键,进入 BIOS 系统。
  • 点击 One-shot UEFI Menu ,在 Select UEFI Boot Option 中选择自己的 USB 启动盘。
  • 进入安装系统,点击 try or Install Ubuntu

服务器备份

  • 此处使用的备份方法是使用 rsync 与群晖同步,定期备份数据。
  • 安装 rsync:
    sudo apt-get install rsync  # 安装 rsync
    rsync -V  # 检查版本
    
  • 登录群晖服务器,点击套件中心,点击 Active Backup for Business:
    在这里插入图片描述
    在这里插入图片描述
  • 点击文件服务器——添加服务器——选择rsync服务器——下一步:
    在这里插入图片描述
  • 填写远程服务器信息,并为此添加备份任务.
  • 选择备份模式,此处选择增量模式。
  • 选择备份目录:此处选择的是:boot,dev,etc,home,opt,root,sys,tmp,usr,var。
  • 创建本地路径,填写任务名称和目的地的路径,以及执行任务的时间和频次。
  • 立即备份。

配置国内镜像软件源

  • 备份原来的源:
    sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
    
  • 将源的内容设置为清华镜像:
    sudo apt install vim
    sudo rm /etc/apt/sources.list
    sudo vim /etc/apt/sources.list
    
    将其中内容改为:
    # 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
    # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
    # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
    # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
    # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
    
    # 预发布软件源,不建议启用
    # deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
    # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse 作者:贝拉的海 https://www.bilibili.com/read/cv17891624?spm_id_from=333.999.0.0 出处:bilibili
    
    此处强烈建议使用清华源,阿里源的包不全,之后有一个安装问题折腾我好久,换了清华源就好了!!!
  • 更新软件列表:
    sudo apt update
    sudo apt upgrade
    

Python 相关设置

  • Ubuntu 22.04 系统默认自带 Python3.10 ,有版本需求的话也可以自己安装一下,此处不再自己安装。
  • 更换 pip 清华源:
    python -m pip install --upgrade pip
    或者 sudo apt install python3-pip
    pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
    

配置 SSH

  • 在安装完新系统后,先执行更新操作确保在当前Ubuntu系统上安装和启用SSH不会发生冲突,使用sudo来执行更新操作
    sudo apt update && sudo apt upgrade -y
    
  • 最新的 Ubuntu 22.04 LTS 系统默认没有安装和启用 SSH 服务,因此首先在终端中运行以下命令,执行安装操作:
    sudo apt install openssh-server -y
    
    安装完后,使用systemctl启动SSH服务:
    sudo systemctl enable --now ssh
    
  • 然后检查SSH服务运行状态,确保服务正常运行并且没有错误输出(显示active running表示服务正常):
    sudo systemctl status ssh
    
    在这里插入图片描述
    按 q 退出预览。
  • SSH 默认使用 22 端口,检查防火墙状态:
    sudo ufw enable  # 打开防火墙
    sudo ufw status
    
    之后就可以通过 XShell 等工具远程连接服务器。

配置远程桌面

MS-RDP 方法
  • 需要注意的是,该方法需要 Ubuntu 账户登录后,才可远程连接,若 Ubuntu 用户注销则无法连接。经过测试,该远程方式实际上为远程控制方式,其实不适用于深度学习服务器的配置。
  • 开启 Ubuntu 的共享功能:
    设置——共享——开启远程桌面。
    在这里插入图片描述
    在这里插入图片描述
    认证栏下方的用户名和密码是远程登录时需要填写的用户名和密码,可以和 Ubuntu 系统登录的用户名和密码不一致。但是这里的密码初始时是随机生成,第一次使用时需要修改。
  • 防火墙允许 xrdp 端口:
    sudo ufw allow from any to any port 3389 proto tcp
    
  • 此时,可以通过 win10 自带的远程连接工具连接服务器了。
xrdp 方法
  • 首先在 Ubuntu 系统中设置永不息屏。
  • 执行如下命令:
    sudo apt update
    sudo apt install xrdp
    sudo apt-get install xfce4
    sudo systemctl enable --now xrdp  # 启动xrdp服务,并设置为开机自启
    sudo ufw allow from any to any port 3389 proto tcp  # 防火墙允许xrdp服务端口
    
    如果多 Linux 用户使用服务器,建议关闭防火墙:
    sudo ufw disable
    
  • 经过测试,远程登录前,需要先注销 ubuntu 系统的登录;结束远程桌面前,也需要先注销登录,不然直接登录 ubuntu 系统时会黑屏。
xrdp 疑难杂症解决办法

经过测试,上述操作已经可以解决远程连接问题,若有其他报错,可参考下述方法。

  • 解决 Job for xrdp.service failed because the control process exited with error code.xrdp 启动错误:
    sudo touch /var/log/xrdp.log
    sudo chown xrdp:adm /var/log/xrdp.log
    sudo chmod 640 /var/log/xrdp.log
    sudo reboot
    
  • 解决 nding ogin info to session manager, please wait…login failed for display 0 启动错误:
    将 allowed_users=console 改为 allowed_users=anybody:
    sudo vi /etc/X11/Xwrapper.config
    

安装 CUDA

  • 进入系统的图形桌面,打开软件更新器,可以看到标签栏有一个附加驱动,选择第一个安装 Nvidia 官方驱动(第二个是开源驱动)即可,安装完重启服务器:
    在这里插入图片描述

  • 重启完之后更新一下软件:

    sudo apt update
    sudo apt upgrade
    
  • 通过nvidia-smi查看当前显卡驱动版本:
    在这里插入图片描述

  • 通过https://docs.nvidia.cn/cuda/cuda-toolkit-release-notes/index.html找到与之对应的 CUDA 版本:
    在这里插入图片描述

  • 再通过https://developer.nvidia.com/cuda-toolkit-archive/下载该版本的 CUDA :
    在这里插入图片描述

    wget https://developer.download.nvidia.com/compute/cuda/12.0.1/local_installers/cuda_12.0.1_525.85.12_linux.run
    sudo sh cuda_12.0.1_525.85.12_linux.run --override
    

    报的警告选择 continue :
    在这里插入图片描述

    根据提示选择安装选项,注意不要勾选第一个安装显卡驱动( driver )的,因为之前已经安装过了:
    在这里插入图片描述
    安装完成后提示:
    在这里插入图片描述

  • 根据上图提示需要配置环境变量:

    nano  ~/.bashrc
    

    再文件最后加入以下语句(加入的具体内容根据上述输出进行修改):

    export CUDA_HOME=/usr/local/cuda-12.0
    export LD_LIBRARY_PATH=${CUDA_HOME}/lib64
    export PATH=${CUDA_HOME}/bin:${PATH}
    

    然后使其生效:

    source ~/.bashrc
    
  • 可以使用命令nvcc -V查看安装的版本信息:
    在这里插入图片描述

  • 进入https://developer.nvidia.cn/rdp/cudnn-archive下载对应 CUDA 的 cuDNN :
    在这里插入图片描述

  • 下载好解压:

    tar xvf cudnn-linux-x86_64-8.9.2.26_cuda12-archive.tar.xz
    
  • 进入解压后的目录运行以下命令:

    sudo cp include/cudnn*.h  /usr/local/cuda/include
    sudo cp lib/libcudnn* /usr/local/cuda/lib64
    sudo chmod a+r /usr/local/cuda/include/cudnn*.h 
    sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
    
  • 拷贝完成之后,可以使用以下命令查看CUDNN的版本信息:

    cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
    

    在这里插入图片描述
    表示版本信息为8.9.2。

使用 LXD 实现多人共用

  • 在系统 软件和更新 中的附加驱动中安装 NVIDIA 驱动:
    在这里插入图片描述
    查看驱动版本:

    nvidia-smi
    
  • 安装 lxd、zfs 及 bridge-utils:

    sudo snap install lxd
    sudo apt install zfsutils-linux bridge-utils
    
  • 初始化 lxd:

    sudo lxd init
    

    初始化的具体内容如下:

    Would you like to use LXD clustering? (yes/no) [default=no]: 
    Do you want to configure a new storage pool? (yes/no) [default=yes]: 
    Name of the new storage pool [default=default]: lxd_pool
    Name of the storage backend to use (ceph, dir, lvm, zfs, btrfs) [default=zfs]: 
    Create a new ZFS pool? (yes/no) [default=yes]: 
    Would you like to use an existing empty block device (e.g. a disk or partition)? (yes/no) [default=no]: 
    Size in GiB of the new loop device (1GiB minimum) [default=30GiB]: 600
    Would you like to connect to a MAAS server? (yes/no) [default=no]: 
    Would you like to create a new local network bridge? (yes/no) [default=yes]: 
    What should the new bridge be called? [default=lxdbr0]: 
    What IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: 
    What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: 
    Would you like the LXD server to be available over the network? (yes/no) [default=no]: 
    Would you like stale cached images to be updated automatically? (yes/no) [default=yes]: 
    Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]:
    
  • 创建容器,我的宿主机是ubuntu22.04,可以按需更改:

    sudo lxc launch ubuntu:22.04
    

    查看容器列表:

    lxc list
    
  • 为了后续方便辨识,修改容器名,原始容器名通过上述的 lxc list 查看:

    sudo lxc stop intense-raptor
    sudo lxc rename intense-raptor ubuntu22-tmp
    sudo lxc start ubuntu22-tmp
    
  • 为容器添加设备和权限:

    sudo lxc config device add ubuntu22-tmp gpu gpu
    sudo lxc config set ubuntu22-tmp security.nesting true
    sudo lxc config set ubuntu22-tmp security.privileged true
    

    如果服务器或者电脑有多张显卡,这里一定要指定GPU的索引号 id=xxx,例如:

    sudo lxc config device add ubuntu22-tmp gpu-tmp gpu id=0
    
  • 进入容器 ubuntu22-tmp:

    sudo lxc exec ubuntu22-tmp bash
    

    容器默认用户名为 ubuntu ,此处修改为 ubuntu22-tmp:

    usermod -l ubuntu22-tmp -d /home/ubuntu22-tmp -m ubuntu
    groupmod -n ubuntu22-tmp ubuntu
    

    此时 /home 文件夹下只剩下 ubuntu22-tmp目录。
    更改 ubuntu22-tmp 用户的密码:

    passwd ubuntu22-tmp
    

    修改 root 用户密码:

    passwd root
    

    配置容器的 SSH 连接:

    apt install openssh-server
    vim /etc/ssh/sshd_config
    

    将其中的 PasswordAuthentication 改为 yes,退出编辑后重启 SSH 服务:

    systemctl restart sshd
    

    此时可以用 exit 命令退出到宿主机中,用 SSH 命令远程连接容器:

    sudo ssh ubuntu22-tmp@10.22.118.222
    

    输入密码,能登录则没问题。
    此处针对宿主容器,应该继续进行一系列的 Python 配置、pip 配置、软件源配置、等,后续以该容器为模板进行复制时,会将这些配置信息一并复制。

  • 以 ubuntu22-tmp 为模板复制容器:

    lxc copy ubuntu22-tmp yhl
    

    启动容器,自动分配 ip:

    lxc start yhl
    

    重复上述步骤,修改新容器的密码,之后就可以使用 SSH 连接:

    sudo lxc exec yhl bash
    usermod -l yhl -d /home/yhl -m ubuntu
    groupmod -n yhl ubuntu
    passwd yhl
    passwd root
    
  • 容器内换源:

    sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
    sudo vim /etc/apt/sources.list
    

    将内容更改为:

    # 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
    # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
    # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
    # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
    
    deb http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse
    # deb-src http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse
    
    # 预发布软件源,不建议启用
    # deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
    # # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
    

    更新源:

    sudo apt update
    sudo apt upgrade
    
  • 设置共享文件夹:

    # 新建共享文件夹
    mkdir sharefile
    # 设置权限
    sudo chmodsudo chmod 777 sharefile
    
    # 在宿主机内创建共享区域 
    sudo lxc profile create share-host
    sudo lxc profile set share-host security.privileged true
    

    检查是否创建成功:

    sudo lxc profile show share-host
    

    将文件夹添加到指定 LXD 容器 yhl 中:

    lxc config device add yhl share-host disk source=/home/super/sharefile path=/sharefile
    
  • 容器内安装显卡驱动:
    从官网挑选符合要求的驱动:https://www.nvidia.com/download/index.aspx,下载后放入上述的共享文件夹中,执行脚本,安装选项都选择 no :

    sudo bash ./NVIDIA-Linux-x86_64-535.129.03.run --no-kernel-module
    

    查看是否安装成功以及版本是否合适:

    nvidia-smi
    

    安装 pytorch:
    在这里插入图片描述

    pip3 install torch torchvision torchaudio
    

    验证是否可以调用显卡,显示 true 则成功:

    import torch
    print(torch.cuda.is_available())
    
  • 端口转发实现所有用户通过 SSH 连接容器,此处端口设置为 6001,connect 后面接的是容器 ip :

    lxc config device add ubuntu22-tmp proxy1 proxy listen=tcp:192.168.3.123:6001 connect=tcp:10.13.153.83:22 bind=host
    

安装 docker

sudo apt-get update
# 安装证书
sudo apt-get install \
   ca-certificates \
   curl \
   gnupg \
   lsb-release
   
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

echo \
 "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
 $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 验证是否安装成功
sudo docker -v

docker run hello-world
sudo groupadd docker
# 增加当前用户入docker组中
sudo groupadd docker
sudo gpasswd -a $USER docker
newgrp docker
# 再次验证
$ docker ps
$ docker run hello-world

安装 Anaconda

  • 事先说明,我安装的深度学习服务器是公司服务器,因此有多用户使用 anaconda 的需求,以下的安装过程和网上其他教程不同点在于我将 anaconda 安装到了 /usr/local/anaconda3 下,这样的好处是使得每个用户都可以访问 anaconda ,且每个用户创建的虚拟环境相互不影响。若无此需求,只需执行最基本的安装命令即可,它会在用户目录下新建一个 anaconda3 目录。
  • 根据本机选择 anaconda 安装包:https://repo.anaconda.com/archive/?C=M&O=A
  • 安装 Anaconda3:
    sudo bash Anaconda3-2023.07-1-Linux-x86_64.sh
    
    在下方自定义安装路径:
    在这里插入图片描述
  • 设置环境变量:
    vim ~/.bashrc
    
    在文本末尾添加:
    # Anaconda environment
    export ANACONDA_HOME=/usr/local/anaconda3
    export PATH=$ANACONDA_HOME/bin:$PATH
    
    更新环境变量:
    source ~/.bashrc
    
    重启命令行即可。

卸载 Anaconda

  • 在安装目录下删除文件夹:
    rm -r anaconda3
    rm -r .conda
    rm -r .anaconda
    
  • 检查和 conda 有关的隐藏文件是否全部删除:
    ls -a
    
  • 删除环境变量:
    vim ~/.bashrc
    
    在文件最后删除从>>> conda initialize >>> 到<<< conda initialize <<<中间的有关 conda 初始化的内容:
    在这里插入图片描述
  • 更新环境变量:
    source ~/.bashrc
    

解决 Ubuntu22.04 无法输入中文的问题

  • 搜索语言支持”,然后里面选择中文,一般情况下安装ubuntu22.04系统时候,就直接是这个配置。
    在这里插入图片描述
  • 命令行输入:
    sudo apt install fcitx5 \
    fcitx5-chinese-addons \
    fcitx5-frontend-gtk3 fcitx5-frontend-gtk2 \
    fcitx5-frontend-qt5 kde-config-fcitx5
    
    之后再重新打开“语言支持”,"键盘输入法系统"选择“fcitx5”:
    在这里插入图片描述
  • 卸载 ibus 以及安装输入法:
    sudo apt-get --purge remove ibus
    sudo apt install fcitx5 fcitx5-frontend-qt5 fcitx5-frontend-gtk3 fcitx5-frontend-gtk2 fcitx5-chinese-addons
    
  • 完成上述操作后,会出现三个拿笔的小企鹅,选择“fcitx5配置”:
    在这里插入图片描述
    通过“鼠标选中“和中间的“上下左右“操作,调整输入法排序:在这里插入图片描述
  • 重启系统。

安装 ChatGLM2

git clone https://github.com/THUDM/ChatGLM2-6B
cd ChatGLM2-6B
pip install -r requirements.txt

使用 fastllm 推理加速

sudo apt install make
sudo apt-get install g++

git clone https://github.com/ztxz16/fastllm.git
cd fastllm
mkdir build
cd build
cmake .. -DUSE_CUDA=ON # 如果不使用GPU编译,那么使用 cmake .. -DUSE_CUDA=OFF
make -j
cd tools && python setup.py install

然后只需要在原本的推理程序中加入两行即可使用 fastllm 加速:

# 这是原来的程序,通过huggingface接口创建模型
from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm2-6b", trust_remote_code = True)
model = AutoModel.from_pretrained("THUDM/chatglm2-6b", trust_remote_code = True)

# 加入下面这两行,将huggingface模型转换成fastllm模型
from fastllm_pytools import llm
model = llm.from_hf(model, tokenizer, dtype = "float16") # dtype支持 "float16", "int8", "int4"

安装闻达环境

  • 建议先下载懒人包,后面用到的模型和各种文件都在懒人包当中:https://pan.baidu.com/s/1idvot-XhEvLLKCbjDQuhyg?pwd=wdai

  • clone 项目并安装通用依赖:

    git clone https://github.com/wenda-LLM/wenda.git
    pip install -r requirements/requirements.txt
    
  • 将模型放入主目录下的 model 文件夹,设置好文件夹名称:
    在这里插入图片描述

  • 在主目录下创建 txt 文件夹,用于存放 txt 格式的知识库,需要 UTF-8 编码:
    在这里插入图片描述

  • 在主目录修改 exmple.config.yml 为 config.yml ,并在其中修改模型类别及模型位置:
    在这里插入图片描述

  • 在 model 文件夹下存放 M3E-BASE 知识库索引模型:
    在这里插入图片描述

  • 在 wenda 环境预先构建索引:

    python plugins/gen_data_st.py
    
  • 主目录下运行 sh 文件即可启动闻达:

    sh run_GLM6B.sh
    

    目前似乎不会自动打开浏览器,请手动输入浏览器的前半部分:
    在这里插入图片描述

参考链接

https://blog.csdn.net/m0_70331483/article/details/130168108

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
回答: 要在Ubuntu 22.04上安装深度学习环境,你需要按照以下步骤进行操作。首先,你需要安装Ubuntu 22.04系统。然后,安装Nvidia显卡驱动和CUDA。接下来,安装cuDNN和Anaconda。最后,安装PyCharm作为你的集成开发环境。[1] 具体来说,你可以按照以下步骤进行操作: 1. 安装Ubuntu 22.04系统。 2. 安装Nvidia显卡驱动。你可以通过官方驱动下载链接下载适合你显卡型号的驱动。在安装之前,你需要进入主板BIOS关闭安启动。然后,使用以下命令卸载原有的驱动: ``` sudo apt-get remove --purge nvidia* ``` 然后,禁用nouveau驱动,在`/etc/modprobe.d/blacklist.conf`文件末尾添加以下内容: ``` blacklist nouveau options nouveau modeset=0 ``` 最后,更新初始ram文件系统并重启计算机: ``` sudo update-initramfs -u ``` 3. 安装CUDA。你可以按照官方文档的指导安装CUDA。 4. 安装cuDNN。进入解压后的目录,运行以下命令: ``` sudo cp include/cudnn*.h /usr/local/cuda/include sudo cp lib/libcudnn* /usr/local/cuda/lib64 sudo chmod a+r /usr/local/cuda/include/cudnn*.h sudo chmod a+r /usr/local/cuda/lib64/libcudnn* ``` 5. 安装Anaconda。你可以从Anaconda官方网站下载适合Ubuntu 22.04的Anaconda安装包,并按照官方文档的指导进行安装。 6. 安装PyCharm。你可以从PyCharm官方网站下载适合Ubuntu 22.04的PyCharm安装包,并按照官方文档的指导进行安装。 完成以上步骤后,你就可以在Ubuntu 22.04上搭建深度学习环境了。希望对你有帮助!
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值