基础人工智能开始pytorch


安装cuda,注意要和自己的神经网络框架匹配
查看pytorch需要对应的cuda版本
https://pytorch.org/get-started/locally/

uv pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu129

pip install vllm --pre --extra-index-url https://wheels.vllm.ai/nightly

安装cuda时选高级模式不要安装其他插件
https://developer.nvidia.com/cuda-downloads

预训练模型
https://pytorch-cn.readthedocs.io/zh/latest/torchvision/torchvision-models/

常用库
pip install pandas matplotlib

安装WSL2版cuda,尽可能安装新版

同时安装WSL2 ubuntu版cuda版(和pytorch版本对应),假设这里是cuda12.4

shell
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin

sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600

wget https://developer.download.nvidia.com/compute/cuda/12.4.1/local_installers/cuda-repo-wsl-ubuntu-12-4-local_12.4.1-1_amd64.deb

sudo dpkg -i cuda-repo-wsl-ubuntu-12-4-local_12.4.1-1_amd64.deb

sudo cp /var/cuda-repo-wsl-ubuntu-12-4-local/cuda-*-keyring.gpg /usr/share/keyrings/

sudo apt-get update

sudo apt-get -y install cuda-toolkit-12-4

验证nvidia GPU是否可用
nvidia-smi 会出现gpu信息和cuda版本

检查pytorch是否检测到cuda
python -c "import torch; print(torch.cuda.is_available())"

在wsl中使用本机网络代理
首先开启代理工具的允许局域网连接
然后wsl中查找虚拟IP
cat /etc/resolv.conf
看到nameserver项就是虚拟机指向本机的IP,这个IP地址就相当于127.0.0.1

在wsl中记得使用代理安装包,例如安装pyTorch
pip3 install torch torchvision torchaudio --proxy http://10.255.255.254:

名词知识点

  • 迁移学习,将已训练好的模型应用到相关的任务上
    • 特征提取,使用预训练模型的前几层作为特征提取器,将输入数据转换为高层次的特征表示,这些特征表示然后被输入到一个新的分类器或回归器中进行训练。在特征提取过程中,预训练模型的参数通常是冻结的,不会进行更新。
    • 模型微调,是迁移学习中的一个步骤,涉及对预训练进行进一步训练,可以选择冻结预训练模型的部分层,只训练新添加的层;也可以解冻部分或全部层,对整个模型进行微调。微调的目的是让模型在新的任务上表现更好,同时保留预训练模型在原始任务上的知识
    • 冻结预训练模型预训练模型的所有层都被冻结,作为固定的特征提取器。只在预训练模型中添加新的层,并仅训练这些新添加的层。这种方法适用于新任务的数据量较少的情况,因为它减少了需要训练的参数数量。如果你的任务是分类任务,并且需要调整输出类别数,那么通常在尾部添加新层。如果你需要在输入数据进入预训练模型之前进行预处理,那么可以在顶部添加新层。
    • 混合方法在这种方法中,结合特征提取和模型微调的方法。例如,冻结预训练模型的前几层,只微调后几层和新添加的层。这种方法可以在保留预训练模型知识的同时,适应新的任务。
    • 拟合拟合的目标是找到一个模型,使其能够正确表达训练数据的规律,同时在新数据上表现良好。
    • 过拟合模型在训练数据上表现得过于“完美”,甚至学习了数据中的噪声或细节规律,导致模型在新数据(测试数据)上的表现变差
    • 欠拟合 指模型未能充分学习数据中的规律,无论是在训练集还是测试集上表现都不好。

欠拟合和过拟合的解决方法

图形化理解:
假设我们在二维平面中,用曲线拟合数据点:

欠拟合:模型用一条直线去拟合数据,但实际数据是曲线(模型太简单)。
表现:
训练集和测试集的误差都很高。
模型无法捕捉到数据的本质规律。

原因:
模型太简单(例如,参数过少)。
数据特征不足或未经过充分预处理。
训练时间太短。

解决方法:
增加模型复杂度(如添加层数或节点数)。
提供更丰富的特征(如进行特征工程)。
增加训练轮次。
确保数据质量。

过拟合:模型用极其复杂的曲线拟合数据,甚至连接每个数据点,但这样对新数据表现不好。

表现:
训练集的误差非常低,但测试集的误差很高。
模型对训练数据“记得太多”,而不是“学到规律”。

原因:
模型太复杂(例如,参数过多)。
训练数据不足。
数据中存在噪声,模型误将噪声当作规律学习。

解决方法:
使用正则化技术(如L2正则化、Dropout)。
提高数据集的多样性或数量。
减少模型复杂度(如减少层数、节点数)。
使用早停(early stopping)来防止训练过长。

模型选型

文本问题分类
sudo git clone https://www.modelscope.cn/iic/nlp_structbert_zero-shot-classification_chinese-tiny.git

N卡能做的事

https://catalog.ngc.nvidia.com/