code3
accelerate多卡训练:
accelerate config
accelerate launch --num_processes=2 train_ins_ipa_inpainting_facemodel_blip.py
overleaf插入公式:
\begin{align}
公式
\end{align}
overleaf 常用符号:https://www.cnblogs.com/Uriel-w/p/17038327.html
算FID:
pip install pytorch-fid
python -m pytorch_fid path/to/dataset1 path/to/dataset2
du -sh:查看当前目录总大小
df -h:查看磁盘空间情况
git push -f origin main:test:将<本地分支名>main 的代码推送到<远程主机名>origin 上的 test 分支上,-f 是强制覆盖
git branch来查看本地都有哪些分支
.gitignore文件的作用就是在git add时将我们指定的一些文件自动排除在外,不提交到git当中
ssh 无密码登录:
cd ~/.ssh ssh-keygen ssh-copy-id -i id_rsa.pub -p 端口号 root@36.133.182.81 ssh-add -K id_rsa
关闭所有warning:
import warnings warnings.filterwarnings("ignore")
git remote add origin https://github.com/tanzhouxing/medical_gen_pku.git:将 远程主机名 命名为 origin
查看gpu版本,总显存大小,可用显存大小:nvidia-smi --query-gpu=name,memory.total,memory.free --format=csv,noheader
如果要引入同一个包(里面要有__init__.py文件)下的另一个文件,前面加个。就不用写import .了:
import sys,os
sys.path.append(os.getcwd())
设置pycharm在cuda1上调试:environment里面加入CUDA_VISIBLE_DEVICES=1;
直接指定显卡运行:CUDA_VISIBLE_DEVICES=0 python xxx.py
本地文件加载 :tokenizer = BertTokenizer.from_pretrained("/yinxr/ldp/bert-base-uncased")
tmux上翻信息:ctrl+b,【,然后按上键
清空没用的cuda缓存:
if torch.cuda.is_available():
torch.cuda.empty_cache()
for i in itertools.chain(x,y): 遍历x和y里面的所有东西
lr调度方案有:linear,cosine,cosine_with_restarts, polynomial,constant,constant_with_warmup,除了constant 其他都需要warmup,warmup内,lr都是从0线性增加到base_lr
constant :学习率始终等于传入的optimizer的 lr(不变)
CONSTANT_WITH_WARMUP:warmupstep内,lr从0线性增加到base_lr,训练的step>warmupstep,lr恒等于base_lr
linear:当训练的step<=warmupstep,lr从0线性增加到base_lr(optimizer里面的lr),当warmupstep<训练的step<=num_training_steps,lr从base_lr线性降低到0,当训练的step>num_training_steps,lr恒等于0
COSINE:warmupstep内,lr从0线性增加到base_lr,然后在num_training_steps内按照cos曲线降低到0
polynomial:warmupstep内,lr从0线性增加到base_lr,然后在num_training_steps内按照polynomial曲线降低到 指定的 lr_end
OmegaConf.load(".yaml"):将 yaml文件读为字典
字典.pop(key,"123"):返回字典[key],并删除该字典的key,如果找不到key,则返回123
torch.hub.download_url_to_file(url,path):把url的东西下载到path
像素重组:无损的上采样,通道变小,长宽变大,(C*r*r)*W*H---->C*(H*r)*(W*r)
bn = gr.Button("Greet") :一个名字是“greet”的按钮
bn.click(fn=greet, inputs=name, outputs=output):将inputs=name传给函数fn=greet,fn的输出给outputs
from pathlib import Path
for x in Path(路径).iterdir():迭代器,指定路径下的所有一级的文件和文件夹 x.is_file():x是不是文件
tokenizer.add_special_tokens({'additional_special_tokens':["<e>"]}):告诉分词器有个新的字词叫<e>,看到以后不要再细分了
tensor.fill_(2):用2自身覆盖,shape不变
model.train():启用 batch normalization 和 dropout
for name,param in model.named_parameters(): #只是冻住该model的更新,不会影响到其他 model 的更新
param.requires_grad = False
deepseed 作用就是小机器加载大模型,不过时间慢了,原理是GPU显存不够,CPU内存来凑用于加速训练,即:将当前时刻,训练模型用不到的参数,缓存到CPU中,等到要用到了,再从CPU挪到GPU。这里的“参数”,不仅指的是模型参数,还指optimizer、梯度等
pytorch_lightning 就是把模型训练代码解耦了而已
os.scandir(path):当前一级目录下所有文件夹和文件
f.is_dir() :判断是否是文件夹
os.chdir("/var/www/html" ) : 切换到 "/var/www/html" 目录
os.getcwd() # 当前目录
clip_grad_norm_(params_to_optimize, max_norm=5, norm_type=2) # 梯度裁剪,要把它放到optimizer.step()前面,max_norm越小,对梯度爆炸的解决越狠
strftime("%m-%d_%H_%M_%S", gmtime()):显示当前月份-号-时分秒,比如:04-28_03_25_01
释放所有显卡的进程命令:fuser -v /dev/nvidia* -k
释放第0块显卡的进程命令:fuser -v /dev/nvidia0 -k
torch.tile(input, (2,2)):对input,第0个维度上重复2次,第1个维度上重复2次
Path对象.with_stem("asd"):替换文件名,如a/b.jpg->a/asd.jpg
assert 条件 , '提示语':若不满足条件,报错信息是提示语,然后终止程序
image_dataset = ImageDataset(args)
image_dataloader = torch.utils.data.DataLoader(image_dataset, batch_size=batch_size,collate_fn=fn)
for batch in image_dataloader :
for的过程:先去 ImageDataset 调用__getitem__分别拿出batch_size个样本来,然后放到一起给 fn 函数,fn 负责处理这batch_size个样本
tmux安装:
sudo apt-get update
sudo apt-get install libevent-dev
sudo apt-get install tmux
读取parquet文件(可以直接存储字节类型,不用像json文件那样转换)为dataframe:ScienceQA_test_ori = pd.read_parquet('test_2017_sample.parquet', engine='pyarrow')
保存为parquet文件:
hadoop fs -put a multi_modal/test :上传a文件到multi_modal/下
hadoop fs -mkdir multi_modal/tmp_dir:新建目录
hadoop fs -cp multi_modal/test multi_modal/tmp_dir :复制到目录
hadoop fs -rm 文件:删除文件
win:alt+a 固定区域截屏
torch.as_tensor(a):把a转成 tensor
写入csv文件:
import os
import pandas as pd
path = 'temp.csv'
# 一次写入2行
df = pd.DataFrame(data=[['1', '98.2789%'], ['2', '76.2345%']])
# 解决追加模式写的表头重复问题
if not os.path.exists(path):
df.to_csv(path, header=['epoch', 'accuracy'], index=False, mode='a')
else: # 追加下一行写
df.to_csv(path, header=False, index=False, mode='a')
调用openai接口:
openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=messages).choices[0].message.content:得到open的回复
解压zip:jar xf m.zip
将a,b,c文件压缩为m.zip:jar cf m.zip a b c
bash a.sh a b c :$@就是所有参数:a b c
百度网盘命令行下载:
pip install bypy
python -m bypy info:复制链接到浏览器,登录后拷贝码到命令行
把百度网盘要下载的东西挪到:我的应用数据-bypy
python -m bypy downdir 网盘文件夹 目标路径
python -m bypy downfile 网盘文件 目标路径
擅长conda环境:conda remove -n 需要删除的环境名 --all
gdown 命令能下载google文件
pip install gdown
gdown 'https://drive.google.com/uc?id=1H73TfV5gQ9ot7slSed_l-lim9X7pMRiU'
带有.z0x的解压:zip -s 0 FFHQ.zip --out FFHQ-full.zip && unzip FFHQ-full.zip
hugging face上下载指定文件,如一个ckpt文件
from huggingface_hub import hf_hub_download filename = "v1-5-pruned.ckpt" repo_id = "runwayml/stable-diffusion-v1-5" while True: try: path = hf_hub_download(repo_type="model", repo_id=repo_id, filename=filename) except Exception as e: print(e, "retrying") continue break print('finish:',path)
下载某个文件夹下的东西:
from huggingface_hub import hf_hub_download files = ['config.json','diffusion_pytorch_model.fp16.safetensors','diffusion_pytorch_model.safetensors','model.onnx', 'model.onnx_data','openvino_model.bin','openvino_model.xml'] dir = "unet" repo_id = "stabilityai/stable-diffusion-xl-base-1.0" for file in files: while True: try: path = hf_hub_download(repo_type="model", repo_id=repo_id, filename=dir + '/' + file,cache_dir='/root/data/t2i/sdxl' + '/' + dir) # cache_dir 指定下载的位置 except Exception as e: print(e, "retrying") continue break print('finish:',path)
同时下载多个文件:
import torch from diffusers import StableDiffusionPipeline while True: try: pipe = StableDiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5", revision="fp16", torch_dtype=torch.float16,cache_dir='/root/data/t2i/sdv15') print('ok') break except Exception as e: print(e) continue
下载hugging face的数据集:
from datasets import load_dataset import datasets while True: try: config = datasets.DownloadConfig(resume_download=True, max_retries=100) dataset = datasets.load_dataset( "lambdalabs/pokemon-blip-captions", cache_dir='pokemon-blip-captions', download_config=config) print('ok') break except Exception as e: print(e) continue
pipeline 保存为 diffusers格式
pipeline.save_pretrained('./model', safe_serialization=False) # 在 文件夹model下 转成 diffusers格式 pipeline.save_pretrained(dump_path, safe_serialization=True) # 在 文件夹model下 转成 diffusers格式,其中diffusers格式中的bin文件都转为safetensors格式
安装dlib:conda install -c conda-forge dlib
模型只会更新优化器内部的参数,其他可训练参数在进行反向传播时依旧进行求导,只不更新
sd 加载预训练lora,其中lora下要有 pytorch_lora_weights.bin : pipe.unet.load_attn_procs(lorapath)
pipe.unet.load_attn_procs(lorapath) # sd 加载预训练 lora