机器学习入门

简介

https://huggingface.co/是一个AI社区,类似于github的地位。它开源了许多机器学习需要的基础组件如:Transformers, Tokenizers等。
许多公司也在不断地往上面提交新的模型和数据集,利用它你可以获取以下内容:

  • Datasets : 数据集
  • Models : 预训练好的模型
  • Docs : 各种文档。

名词解释

名词解释
NLPNatural Language Processing(自然语言处理)是一种人工智能技术,用于使计算机能够理解、解析和生成人类语言
计算图在机器学习和深度学习中用于描述计算过程的图结构。它由节点(Node)和边(Edge)组成,节点表示计算操作(矩阵乘法、卷积、激活函数等),边表示数据流向(数据在节点之间的传递和依赖关系)。
动态图在运行时动态构建和执行计算图的方式,可以在每个计算步骤中动态地定义、修改和执行计算节点。这 种方式使得模型的开发和调试更加灵活和直观,可以方便地使用控制流语句和条件语句,更容易进行动态的模型结构调整和组合
静态图在编译时构建和优化计算图的方式,计算图的定义和执行是分离的,首先需要定义计算图的结构,然后通过编译和优化过程生成可执行的计算图
PyTorch一个开源的深度学习框架,以动态图的方式进行计算图的构建和执行。它提供了丰富的工具和库,使得在Python环境中进行张量计算和构建神经网络更加简单和高效
TensorFlow一个开源的深度学习框架,以静态图的方式进行计算图的构建和执行。它具有广泛的生态系统和强大的分布式计算支持,适用于大规模模型训练和部署
JAX一个用于高性能数值计算和机器学习的开源库。它结合了NumPy的易用性和灵活性,以及XLA的自动加速能力。JAX支持自动微分和GPU加速,适合构建高性能的机器 学习模型
Transformers一个在NLP领域中广泛使用的模型架构,用于处理文本相关的任务。提供API和工具,可轻松下载和训练训练模型,并支持PyTorch、TensorFlow和JAX之间的框架互操作性
conda跨平台且支持多语言的软件包管理系统,它可以安装、更新和删除各种编程语言的软件包,并支持环境隔离
CUDA(Compute Unified Device Architecture)是一种并行计算平台和编程模型,由NVIDIA开发。它允许开发者使用NVIDIA GPU(图形 处理器)进行通用目的的并行计算。
FIM(Fine-tuned Iterative Refinement Model)微调迭代优化模型,指在一个已经 预训练好的模型的基础上,通过进一步的训练和调整,使其适应特定的任务或领域

环境安装

conda

conda用于对包进行环境管理,分为三个版本:

  • Anacoda : 用于科学计算,包含了Vonda、Python和超过150个可选软件包及其依赖项。
  • Miniconda : Anaconda 的轻量级版本,只包含了 Python 和 Conda,以及它们的依赖项
  • Conda : 只包含自身。

可以去国内镜像站下载: https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/
或者去官网下载:https://docs.conda.io/projects/miniconda/en/latest/

使用文档:https://conda.io/projects/conda/en/latest/user-guide/getting-started.html
安装

# 去https://repo.anaconda.com/miniconda上查找匹配的python版本
wget https://repo.anaconda.com/miniconda/Miniconda3-py39_23.10.0-1-Linux-x86_64.sh
chmod +x Miniconda3-py39_23.10.0-1-Linux-x86_64.sh
./Miniconda3-py39_23.10.0-1-Linux-x86_64.sh -b -f -p <install director>
ln -s /usr/local/conda/bin/conda /usr/bin/conda
conda init

常用命令

conda --verison
conda update conda
where conda
# 查看环境
conda info --envs
# 创建myEnvName环境,并安装python包,如果不指定版本,则使用的是conda中的python版本
conda create --name myEnvName python=3.9
conda activate myEnvName 
conda deactivate
conda remove --name myEnvName --all

# 查找和安装软件包
conda search transformers
conda install transformers
conda list
# 查看conda配置
conda config --set show_channel_urls yes #生成配置文件
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --remove channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --show channels
conda info | grep -i config
vim ~/.condarc
# 清理缓存(下载失败后需要)
conda clean --all
#清理镜像索引
conda clean -i

配置代理
vim .condarc (windows下必须是gbk编码)
清华源

channels:
  - defaults
show_channel_urls: true
custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

阿里源
https://developer.aliyun.com/mirror/anaconda

channels:
  - defaults
show_channel_urls: true
default_channels:
  - http://mirrors.aliyun.com/anaconda/pkgs/main
  - http://mirrors.aliyun.com/anaconda/pkgs/r
  - http://mirrors.aliyun.com/anaconda/pkgs/msys2
custom_channels:
  conda-forge: http://mirrors.aliyun.com/anaconda/cloud
  msys2: http://mirrors.aliyun.com/anaconda/cloud
  bioconda: http://mirrors.aliyun.com/anaconda/cloud
  menpo: http://mirrors.aliyun.com/anaconda/cloud
  pytorch: http://mirrors.aliyun.com/anaconda/cloud
  simpleitk: http://mirrors.aliyun.com/anaconda/cloud
pip

在配置完conda进行环境隔离后,除了使用conda去安装依赖包之外,也可以使用python自带的pip(会自动使用conda env下的pip)管理工具。

# pip install <package>[(==|>=)<version>] [-i mirror url]
pip install transformers==4.30.2 -i https://mirrors.aliyun.com/pypi/simple/
# 一次下载文件中写的依赖,每个依赖占一行
pip install -r requirements.txt
# 全局设置pip使用的镜像源
export PIP_INDEX_URL=https://mirrors.aliyun.com/pypi/simple/
常用工具

在线测试模型环境:https://colab.research.google.com/

# 查看gpu情况
nvidia-smi

下载模型

当你使用transforms的包进行引入模型时,它会去官网下载模型: https://huggingface.co/。

from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained("THUDM/codegeex2-6b", trust_remote_code=True, cache_dir="/mnt/CodeGeeX2/model")
model = AutoModel.from_pretrained("THUDM/codegeex2-6b", trust_remote_code=True, device='cuda',  cache_dir="/mnt/CodeGeeX2/model")
model = model.eval()

上面的示例会自动取huggingface官网下载THUDM/codegeex2-6b这个模型,但是这个网站因为墙的原因在国内无法访问,可以考虑使用镜像去下载到指定位置

pip install -U huggingface_hub -i https://mirrors.aliyun.com/pypi/simple/
export HF_ENDPOINT=https://hf-mirror.com
# 如果镜像需要授权才能下载,则需要登录
huggingface-cli login --token <your hugging face token>
# 下载THUDM/codegeex2-6b模型到本地目录:/mnt/data/CodeGeeX2/model
huggingface-cli download --resume-download --local-dir-use-symlinks False THUDM/codegeex2-6b --cache-dir /mnt/data/CodeGeeX2/model
路径配置

默认情况下模型文件会被下载到用户目录中,可以通过环境变量修改:
export HF_HUB_CACHE=/data/model/hub
export TRANSFORMERS_CACHE=/data/model/hub

默认情况下 AutoTokenizer.from_pretrained会下载最新版本的模型文件到本地,如果作者发布很频繁会导致你经常要全量下载模型(Linux上使用软链是增量更新),如果你不需要下载最新的模型,可以指定对应的commitId(类似git)。

# revsion从huggingface中的提交记录复制
model = AutoModel.from_pretrained("THUDM/codegeex2-6b", revision="b33855aae7b0dd6ddc9e9ed689df451f410fa950")

在这里插入图片描述

更多使用帮助请参考:https://hf-mirror.com/

版本兼容

Torch与CUDA

去nvida(https://www.nvidia.com/Download/index.aspx)下载驱动的时候,选择完硬件会让你选择CUDA Toolkit版本。安装torch的时候,也需要选择cuda版本后,才能决定你的torch版本。
https://pytorch.org/get-started/previous-versions/
在这里插入图片描述
在这里插入图片描述

# 查看nvida信息,第一行会展示目前驱动对应的cuda版本。
nvidia-smi

常见问题

  1. system does not have Windows Long Path support enabled
    需要启用windows对长路径的额支持,新增xxx.reg,填入文本后运行。
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem]
"LongPathsEnabled"=dword:00000001
  • 16
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值