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文件:

import pyarrow.parquet as pq
table = pa.Table.from_pandas(pd.DataFrame(字典))
pq.write_table(table, 'a.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.api_key = "..."
messages=[{'role': 'user', 'content': hi},{'role': 'assistant', 'content':'how may i assist you'},{'role': 'user', 'content':'what is the weather'}]  # messages是对话的历史上下文,user是我,assistant是chatgpt

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

模型只会更新优化器内部的参数,其他可训练参数在进行反向传播时依旧进行求导,只不更新

所有卡同时训练:trainer = pl.Trainer(gpus=-1, strategy="ddp",...,然后bz*卡数

sd 加载预训练lora,其中lora下要有 pytorch_lora_weights.bin : pipe.unet.load_attn_procs(lorapath) 

pipe.unet.load_attn_procs(lorapath) # sd 加载预训练 lora
posted @ 2023-02-19 12:55  Jary霸  阅读(135)  评论(0编辑  收藏  举报