简介
https://huggingface.co/
是一个AI社区,类似于github
的地位。它开源了许多机器学习需要的基础组件如:Transformers, Tokenizers等。
许多公司也在不断地往上面提交新的模型和数据集,利用它你可以获取以下内容:
- Datasets : 数据集
- Models : 预训练好的模型
- Docs : 各种文档。
名词解释
名词 | 解释 |
---|---|
NLP | Natural 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
常见问题
- 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