AI

colab记事本

record all I use

Posted by shake on January 2, 2024

已经成为Colab的深度用户,整理一下我colab使用的内容,基本都是和huggingface和大模型有关,其实也是方便自己查询。现在已经记不住东西。

密钥

登录huggingface是需要密钥,把colab的notebook分享出去,这个会导致你的密钥泄露。你是可以提前处理,但是总会有忘记的时候。

Colab提供密钥管理的功能,你可以把Huggingface的token存放并在colab进行调用。

非常完美,huggingface的登录,不需要进行交互,保护Huggingface的token,并且还给git提供相同的密钥。

1
2
3
4
5
# import 密钥
from google.colab import userdata
hf_token = userdata.get('huggingface')
!git config --global credential.helper store
!huggingface-cli login --token $hf_token --add-to-git-credential

上传模型,数据集到huggingface

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
!pip install -q huggingface_hub
from huggingface_hub import create_repo, HfApi

username = "chenshake"

# Defined in the secrets tab in Google Colab
api = HfApi(token=userdata.get("HF_TOKEN"))

# Create empty repo
create_repo(
	repo_id = f"{username}/{MODEL_NAME}-GGUF",
	repo_type="model",
	exist_ok=True,
)

# Upload gguf files
api.upload_folder(
	folder_path=MODEL_NAME,
	repo_id=f"{username}/{MODEL_NAME}-GGUF",
	allow_patterns=f"*.gguf",
)

# upload folder
api = HfApi()
api.upload_folder(
	folder_path="Llama-2-7b-awq",
	repo_id="chenshake/Llama-2-7b-awq",
	repo_type="model",
)

模型变量

简化工作量

1
2
3
# models变量
MODEL_ID = "meta-llama/Llama-2-7b"
MODEL_NAME = MODEL_ID.split('/')[-1]

微调需要安装包

有时候需要很清楚自己使用的版本号,避免麻烦。transformers,colab是预安装,有时候会遇到需要最新版本。

1
2
3
4
5
!pip install -q \
git+https://github.com/huggingface/transformers.git \
accelerate==0.21.0 \
peft==0.4.0 bitsandbytes==0.40.2\ 
trl==0.4.7

选择使用

1
2
3
4
5
6
7
!pip install -q huggingface_hub
!pip install -q -U trl transformers accelerate peft
!pip install -q -U datasets bitsandbytes einops wandb

# Uncomment to install new features that support latest models like Llama 2
# !pip install git+https://github.com/huggingface/peft.git
# !pip install git+https://github.com/huggingface/transformers.git

GIT LFS

meta-llama/Llama-2-7b-hf

里面有两种使用LFS存储大文件:PyTorch,safetensors。

PyTorch 模型权重使用Python的 pickle 工具将数据序列化到一个 .bin 文件中。 pickle 不安全,pickle 的文件可能包含可以执行的恶意代码。

safetensors 是 pickle 的一个安全替代方案,非常适合共享模型权重。safetensors 是一种安全快速存储和加载tensors的文件格式。

所以对你有用的是safetensors,无需下载bin格式

1
git lfs clone "https://huggingface.co/meta-llama/Llama-2-7b-hf" --exclude="*.bin"

这样可以实现存放在LFS存储的文件,不会下载bin的文件,其他都会下载。

如果你不希望下载任何lfs的文件

1
export GIT_LFS_SKIP_SMUDGE=1

colab模型文件位置

1
2
3
# make a soft link for  /root/.cache
!mkdir -p /root/.cache/huggingface
!ln -s /root/.cache/huggingface /content

文件下载

1
2
3
4
5
!huggingface-cli download \
	--local-dir=/content/Llama-2-7b \
	meta-llama/Llama-2-7b \
	checklist.chk consolidated.00.pth params.json \
	tokenizer.model tokenizer_checklist.chk

colab 环境检测

1
2
3
4
5
6
7
8
9
10
# check default cuda version
!nvcc --version 4

# check default torch version
import torch
print(torch.__version__)

# check default transformers version
import transformers
print (transformers.__version__)