From 6e6c8f8e7a70f1d1dfa9fb530bf01d308e00a18b Mon Sep 17 00:00:00 2001 From: wassname Date: Mon, 10 Apr 2023 16:15:52 +0800 Subject: [PATCH] init --- .gitignore | 4 + .vscode/settings.json | 22 + Dockerfile | 78 --- Finetune4bConfig.py | 105 ---- alpaca_lora_4bit_penguin_fact.gif | Bin 355403 -> 0 bytes amp_wrapper.py | 26 - arg_parser.py | 115 ---- autograd_4bit.py | 587 ++++++++++--------- custom_autotune.py | 167 ------ data.txt | 106 ---- finetune.py | 178 ------ gradient_checkpointing.py | 61 -- inference.py | 44 -- matmul_utils_4bit.py | 143 ----- mjc_notes.md | 57 ++ monkeypatch/llama_flash_attn_monkey_patch.py | 144 ----- requirements.txt | 9 +- scripts/clone-model.py | 37 ++ scripts/download-model.py | 275 +++++++++ scripts/export_hf_checkpoint.py | 81 +++ train_data.py | 273 --------- triton_utils.py | 246 -------- 22 files changed, 776 insertions(+), 1982 deletions(-) create mode 100644 .vscode/settings.json delete mode 100644 Dockerfile delete mode 100644 Finetune4bConfig.py delete mode 100644 alpaca_lora_4bit_penguin_fact.gif delete mode 100644 amp_wrapper.py delete mode 100644 arg_parser.py delete mode 100644 custom_autotune.py delete mode 100644 data.txt delete mode 100644 finetune.py delete mode 100644 gradient_checkpointing.py delete mode 100644 inference.py delete mode 100644 matmul_utils_4bit.py create mode 100644 mjc_notes.md delete mode 100644 monkeypatch/llama_flash_attn_monkey_patch.py create mode 100644 scripts/clone-model.py create mode 100644 scripts/download-model.py create mode 100644 scripts/export_hf_checkpoint.py delete mode 100644 train_data.py delete mode 100644 triton_utils.py diff --git a/.gitignore b/.gitignore index e531c1e..f7c3a0f 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,7 @@ llama-13b-4bit llama-13b-4bit.pt text-generation-webui/ repository/ +loras/ +loras +models/ +models diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..ad08e93 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,22 @@ +{ + "workbench.colorCustomizations": { + "activityBar.activeBackground": "#bb7714", + "activityBar.background": "#bb7714", + "activityBar.foreground": "#15202b", + "activityBar.inactiveForeground": "#15202b99", + "activityBarBadge.background": "#19e693", + "activityBarBadge.foreground": "#15202b", + "commandCenter.border": "#e7e7e799", + "sash.hoverBorder": "#bb7714", + "statusBar.background": "#8d5a0f", + "statusBar.foreground": "#e7e7e7", + "statusBarItem.hoverBackground": "#bb7714", + "statusBarItem.remoteBackground": "#8d5a0f", + "statusBarItem.remoteForeground": "#e7e7e7", + "titleBar.activeBackground": "#8d5a0f", + "titleBar.activeForeground": "#e7e7e7", + "titleBar.inactiveBackground": "#8d5a0f99", + "titleBar.inactiveForeground": "#e7e7e799" + }, + "peacock.color": "#8d5a0f" +} diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index cc02c32..0000000 --- a/Dockerfile +++ /dev/null @@ -1,78 +0,0 @@ -# syntax = docker/dockerfile:experimental - -# Dockerfile is split into parts because we want to cache building the requirements and downloading the model, both of which can take a long time. - -FROM nvidia/cuda:11.7.0-devel-ubuntu22.04 AS builder - -RUN apt-get update && apt-get install -y python3 python3-pip git - -RUN pip3 install --upgrade pip - -# Some of the requirements expect some python packages in their setup.py, just install them first. -RUN --mount=type=cache,target=/root/.cache/pip pip install --user torch==2.0.0 -RUN --mount=type=cache,target=/root/.cache/pip pip install --user semantic-version==2.10.0 requests tqdm - -# The docker build environment has trouble detecting CUDA version, build for all reasonable archs -ENV TORCH_CUDA_ARCH_LIST="6.0 6.1 7.0 7.5 8.0 8.6" -COPY requirements.txt requirements.txt -RUN --mount=type=cache,target=/root/.cache pip install --user -r requirements.txt - -# ------------------------------- - -# Download the model -FROM nvidia/cuda:11.7.0-devel-ubuntu22.04 AS downloader -RUN apt-get update && apt-get install -y wget - -RUN wget --progress=bar:force:noscroll https://huggingface.co/decapoda-research/llama-7b-hf-int4/resolve/main/llama-7b-4bit.pt - - - -# ------------------------------- - -#FROM pytorch/pytorch:2.0.0-cuda11.7-cudnn8-devel -FROM nvidia/cuda:11.7.0-devel-ubuntu22.04 - -RUN --mount=type=cache,target=/var/cache/apt apt-get update && apt-get install -y git python3 python3-pip - -RUN ln -s `which python3` /usr/bin/python - - -# Copy the installed packages from the first stage -COPY --from=builder /root/.local /root/.local - -RUN mkdir alpaca_lora_4bit -WORKDIR alpaca_lora_4bit - -COPY --from=downloader llama-7b-4bit.pt llama-7b-4bit.pt - -#RUN git clone --depth=1 --branch main https://github.com/andybarry/text-generation-webui-4bit.git text-generation-webui-tmp - -RUN git clone --depth=1 --branch main https://github.com/oobabooga/text-generation-webui.git text-generation-webui-tmp - -RUN --mount=type=cache,target=/root/.cache pip install --user markdown gradio - -# Apply monkey patch -RUN cd text-generation-webui-tmp && printf '%s'"import custom_monkey_patch # apply monkey patch\nimport gc\n\n" | cat - server.py > tmpfile && mv tmpfile server.py - -# Get the model config -RUN cd text-generation-webui-tmp && python download-model.py --text-only decapoda-research/llama-7b-hf && mv models/decapoda-research_llama-7b-hf ../llama-7b-4bit - - -# Get LoRA -RUN cd text-generation-webui-tmp && python download-model.py samwit/alpaca7b-lora && mv loras/samwit_alpaca7b-lora ../alpaca7b_lora - -COPY *.py . -COPY text-generation-webui text-generation-webui -COPY monkeypatch . - -RUN mv -f text-generation-webui-tmp/* text-generation-webui/ - -# Symlink for monkeypatch -RUN cd text-generation-webui && ln -s ../autograd_4bit.py ./autograd_4bit.py && ln -s ../matmul_utils_4bit.py . - -# Swap to the 7bn parameter model -RUN sed -i 's/llama-13b-4bit/llama-7b-4bit/g' text-generation-webui/custom_monkey_patch.py && sed -i 's/alpaca13b_lora/alpaca7b_lora/g' text-generation-webui/custom_monkey_patch.py - -# Run the server -WORKDIR /alpaca_lora_4bit/text-generation-webui -CMD ["python", "-u", "server.py", "--listen", "--chat"] \ No newline at end of file diff --git a/Finetune4bConfig.py b/Finetune4bConfig.py deleted file mode 100644 index 2169f46..0000000 --- a/Finetune4bConfig.py +++ /dev/null @@ -1,105 +0,0 @@ -import os -class Finetune4bConfig: - """Config holder for LLaMA 4bit finetuning - """ - def __init__(self, dataset: str, ds_type: str, - lora_out_dir: str, lora_apply_dir: str, resume_checkpoint: str, - llama_q4_config_dir: str, llama_q4_model: str, - mbatch_size: int, batch_size: int, - epochs: int, lr: float, - cutoff_len: int, - lora_r: int, lora_alpha: int, lora_dropout: float, - val_set_size: float, - gradient_checkpointing: bool, - gradient_checkpointing_ratio: float, - warmup_steps: int, save_steps: int, save_total_limit: int, logging_steps: int, - checkpoint: bool, skip: bool, verbose: bool, - txt_row_thd: int, use_eos_token: bool, groupsize: int, v1: bool, - local_rank: int, flash_attention: bool, backend: str - ): - """ - Args: - dataset (str): Path to dataset file - ds_type (str): Dataset structure format - lora_out_dir (str): Directory to place new LoRA - lora_apply_dir (str): Path to directory from which LoRA has to be applied before training - resume_checkpoint (str): Path to Specified checkpoint you want to resume. - llama_q4_config_dir (str): Path to the config.json, tokenizer_config.json, etc - llama_q4_model (str): Path to the quantized model in huggingface format - mbatch_size (int): Micro-batch size - batch_size (int): Batch size - epochs (int): Epochs - lr (float): Learning rate - cutoff_len (int): Cutoff length - lora_r (int): LoRA R - lora_alpha (int): LoRA Alpha - lora_dropout (float): LoRA Dropout - gradient_checkpointing (bool) : Use gradient checkpointing - gradient_checkpointing_ratio (float) : Gradient checkpoint ratio - val_set_size (int): Validation set size - warmup_steps (int): Warmup steps before training - save_steps (int): Save steps - save_total_limit (int): Save total limit - logging_steps (int): Logging steps - checkpoint (bool): Produce checkpoint instead of LoRA - skip (bool): Don't train model - verbose (bool): If output log of training - txt_row_thd (int): Custom row thd for txt file - use_eos_token (bool): Use Eos token instead of padding with 0 - groupsize (int): Group size of V2 model - v1 (bool): v1 model flag - local_rank (int): local rank if using torch.distributed.launch - flash_attention (bool): Enables flash attention - """ - self.dataset = dataset - self.ds_type = ds_type - self.lora_out_dir = lora_out_dir - self.lora_apply_dir = lora_apply_dir - self.resume_checkpoint = resume_checkpoint - self.llama_q4_config_dir = llama_q4_config_dir - self.llama_q4_model = llama_q4_model - self.mbatch_size = mbatch_size - self.batch_size = batch_size - self.gradient_accumulation_steps = self.batch_size // self.mbatch_size - self.epochs = epochs - self.lr = lr - self.cutoff_len = cutoff_len - self.lora_r = lora_r - self.lora_alpha = lora_alpha - self.lora_dropout = 0 if gradient_checkpointing else lora_dropout # should be 0 if gradient checkpointing is on - self.val_set_size = int(val_set_size) if val_set_size > 1.0 else float(val_set_size) - self.gradient_checkpointing = gradient_checkpointing - self.gradient_checkpointing_ratio = gradient_checkpointing_ratio - self.warmup_steps = warmup_steps - self.save_steps = save_steps - self.save_total_limit = save_total_limit - self.logging_steps = logging_steps - self.checkpoint = checkpoint - self.skip = skip - self.verbose = verbose - self.txt_row_thd = txt_row_thd - self.use_eos_token = use_eos_token - self.world_size = int(os.environ.get("WORLD_SIZE", 1)) - self.local_rank = int(os.environ.get("LOCAL_RANK", local_rank)) - self.ddp = self.world_size != 1 - self.device_map = "auto" if not self.ddp else {"": self.local_rank} - if self.ddp: - self.gradient_accumulation_steps = self.gradient_accumulation_steps // self.world_size - self.groupsize = groupsize - self.v1 = v1 - self.flash_attention = flash_attention - self.backend = backend - - - def __str__(self) -> str: - s = f"\nParameters:\n{'config':-^20}\n{self.dataset=}\n{self.ds_type=}\n{self.lora_out_dir=}\n{self.lora_apply_dir=}\n{self.llama_q4_config_dir=}\n{self.llama_q4_model=}\n\n" +\ - f"{'training':-^20}\n" +\ - f"{self.mbatch_size=}\n{self.batch_size=}\n{self.gradient_accumulation_steps=}\n{self.epochs=}\n{self.lr=}\n{self.cutoff_len=}\n" +\ - f"{self.lora_r=}\n{self.lora_alpha=}\n{self.lora_dropout=}\n{self.val_set_size=}\n" +\ - f"{self.gradient_checkpointing=}\n{self.gradient_checkpointing_ratio=}\n" +\ - f"{self.warmup_steps=}\n{self.save_steps=}\n{self.save_total_limit=}\n" +\ - f"{self.logging_steps=}\n" +\ - f"{self.checkpoint=}\n{self.skip=}\n" +\ - f"{self.world_size=}\n{self.ddp=}\n{self.device_map=}\n" +\ - f"{self.groupsize=}\n{self.v1=}\n{self.backend=}\n" - return s.replace("self.", "") diff --git a/alpaca_lora_4bit_penguin_fact.gif b/alpaca_lora_4bit_penguin_fact.gif deleted file mode 100644 index 12c6a09f8242f41a7e987600a068dcf8349e2e2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 355403 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

Xo^n||MwQHy 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

Wh}yGh$OYVGO)TSlwR-z#%Y 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 K|M~@X_CEm6NGl%z diff --git a/amp_wrapper.py b/amp_wrapper.py deleted file mode 100644 index f7d01f5..0000000 --- a/amp_wrapper.py +++ /dev/null @@ -1,26 +0,0 @@ -import torch - - -class AMPWrapper: - - def __init__(self, model, options=None): - self.model = model - self.options = options - if self.options is None: - self.options = {'enabled': True, 'device_type': 'cuda'} - - def autocast_forward(self, *args, **kwargs): - with torch.amp.autocast(**self.options): - return self.model.non_autocast_forward(*args, **kwargs) - - def autocast_generate(self, *args, **kwargs): - with torch.amp.autocast(**self.options): - return self.model.non_autocast_generate(*args, **kwargs) - - def apply_forward(self): - self.model.non_autocast_forward = self.model.forward - self.model.forward = self.autocast_forward - - def apply_generate(self): - self.model.non_autocast_generate = self.model.generate - self.model.generate = self.autocast_generate diff --git a/arg_parser.py b/arg_parser.py deleted file mode 100644 index 02c56d2..0000000 --- a/arg_parser.py +++ /dev/null @@ -1,115 +0,0 @@ -import os -import argparse -from Finetune4bConfig import Finetune4bConfig - -def parse_commandline(): - parser = argparse.ArgumentParser( - prog=__file__.split(os.path.sep)[-1], - description="Produce LoRA in 4bit training", - usage="%(prog)s [config] [training]\n\nAll arguments are optional" - ) - - parser.add_argument("dataset", nargs="?", - default="./dataset.json", - help="Path to dataset file. Default: %(default)s" - ) - - parser_config = parser.add_argument_group("config") - parser_training = parser.add_argument_group("training") - - # Config args group - parser_config.add_argument("--ds_type", choices=["txt", "alpaca", "gpt4all"], default="alpaca", required=False, - help="Dataset structure format. Default: %(default)s" - ) - parser_config.add_argument("--lora_out_dir", default="alpaca_lora", required=False, - help="Directory to place new LoRA. Default: %(default)s" - ) - parser_config.add_argument("--lora_apply_dir", default=None, required=False, - help="Path to directory from which LoRA has to be applied before training. Default: %(default)s" - ) - parser_training.add_argument("--resume_checkpoint", default=None, required=False, - help="Resume training from specified checkpoint. Default: %(default)s" - ) - parser_config.add_argument("--llama_q4_config_dir", default="./llama-13b-4bit/", required=False, - help="Path to the config.json, tokenizer_config.json, etc. Default: %(default)s" - ) - parser_config.add_argument("--llama_q4_model", default="./llama-13b-4bit.pt", required=False, - help="Path to the quantized model in huggingface format. Default: %(default)s" - ) - - # Training args group - parser_training.add_argument("--mbatch_size", default=1, type=int, help="Micro-batch size. Default: %(default)s") - parser_training.add_argument("--batch_size", default=2, type=int, help="Batch size. Default: %(default)s") - parser_training.add_argument("--epochs", default=3, type=int, help="Epochs. Default: %(default)s") - parser_training.add_argument("--lr", default=2e-4, type=float, help="Learning rate. Default: %(default)s") - parser_training.add_argument("--cutoff_len", default=256, type=int, help="Default: %(default)s") - parser_training.add_argument("--lora_r", default=8, type=int, help="Default: %(default)s") - parser_training.add_argument("--lora_alpha", default=16, type=int, help="Default: %(default)s") - parser_training.add_argument("--lora_dropout", default=0.05, type=float, help="Default: %(default)s") - parser_training.add_argument("--grad_chckpt", action="store_true", required=False, help="Use gradient checkpoint. For 30B model. Default: %(default)s") - parser_training.add_argument("--grad_chckpt_ratio", default=1, type=float, help="Gradient checkpoint ratio. Default: %(default)s") - parser_training.add_argument("--val_set_size", default=0.2, type=float, help="Validation set size. Default: %(default)s") - parser_training.add_argument("--warmup_steps", default=50, type=int, help="Default: %(default)s") - parser_training.add_argument("--save_steps", default=50, type=int, help="Default: %(default)s") - parser_training.add_argument("--save_total_limit", default=3, type=int, help="Default: %(default)s") - parser_training.add_argument("--logging_steps", default=10, type=int, help="Default: %(default)s") - parser_training.add_argument("-c", "--checkpoint", action="store_true", help="Produce checkpoint instead of LoRA. Default: %(default)s") - parser_training.add_argument("--skip", action="store_true", help="Don't train model. Can be useful to produce checkpoint from existing LoRA. Default: %(default)s") - parser_training.add_argument("--verbose", action="store_true", help="If output log of training. Default: %(default)s") - - # Data args - parser_training.add_argument("--txt_row_thd", default=-1, type=int, help="Custom thd for txt rows.") - parser_training.add_argument("--use_eos_token", default=1, type=int, help="Use eos token instead if padding with 0. enable with 1, disable with 0.") - - # V2 model support - parser_training.add_argument("--groupsize", type=int, default=-1, help="Groupsize of v2 model") - parser_training.add_argument("--v1", action="store_true", help="Use V1 model") - - # Multi GPU Support - parser_training.add_argument("--local_rank", type=int, default=0, help="local rank if using torch.distributed.launch") - - # Flash Attention - parser_training.add_argument("--flash_attention", action="store_true", help="enables flash attention, can improve performance and reduce VRAM use") - - # Train Backend - parser_training.add_argument("--backend", type=str, default='cuda', help="Backend to use. Triton or Cuda.") - - return vars(parser.parse_args()) - - -def get_config() -> Finetune4bConfig: - args = parse_commandline() - return Finetune4bConfig( - dataset=args["dataset"], - ds_type=args["ds_type"], - lora_out_dir=args["lora_out_dir"], - lora_apply_dir=args["lora_apply_dir"], - resume_checkpoint=args["resume_checkpoint"], - llama_q4_config_dir=args["llama_q4_config_dir"], - llama_q4_model=args["llama_q4_model"], - mbatch_size=args["mbatch_size"], - batch_size=args["batch_size"], - epochs=args["epochs"], - lr=args["lr"], - cutoff_len=args["cutoff_len"], - lora_r=args["lora_r"], - lora_alpha=args["lora_alpha"], - lora_dropout=args["lora_dropout"], - val_set_size=args["val_set_size"], - gradient_checkpointing=args["grad_chckpt"], - gradient_checkpointing_ratio=args["grad_chckpt_ratio"], - warmup_steps=args["warmup_steps"], - save_steps=args["save_steps"], - save_total_limit=args["save_total_limit"], - logging_steps=args["logging_steps"], - checkpoint=args["checkpoint"], - skip=args["skip"], - verbose=args["verbose"], - txt_row_thd=args["txt_row_thd"], - use_eos_token=args["use_eos_token"]!=0, - groupsize=args["groupsize"], - v1=args["v1"], - local_rank=args["local_rank"], - flash_attention=args["flash_attention"], - backend=args["backend"], - ) diff --git a/autograd_4bit.py b/autograd_4bit.py index 544e429..5af8e53 100644 --- a/autograd_4bit.py +++ b/autograd_4bit.py @@ -1,292 +1,295 @@ -import matmul_utils_4bit as mm4b -import torch -import torch.nn as nn -import time -import math -from torch.cuda.amp import custom_bwd, custom_fwd -from colorama import init, Fore, Back, Style -init(autoreset=True) - - -class AutogradMatmul4bitCuda(torch.autograd.Function): - - @staticmethod - @custom_fwd(cast_inputs=torch.float16) - def forward(ctx, x, qweight, scales, zeros, g_idx, bits, maxq): - ctx.save_for_backward(qweight, scales, zeros, g_idx) - if g_idx is None: - output = mm4b._matmul4bit_v1_recons(x, qweight, scales, zeros) - else: - output = mm4b._matmul4bit_v2_recons(x, qweight, scales, zeros, g_idx) - output = output.clone() - return output - - @staticmethod - @custom_bwd - def backward(ctx, grad_output): - qweight, scales, zeros, g_idx = ctx.saved_tensors - if ctx.needs_input_grad[0]: - if g_idx is None: - grad = mm4b._matmul4bit_v1_recons(grad_output, qweight, scales, zeros, transpose=True) - else: - grad = mm4b._matmul4bit_v2_recons(grad_output, qweight, scales, zeros, g_idx, transpose=True) - return grad, None, None, None, None, None, None - - -try: - import triton_utils as tu - - class AutogradMatmul4bitTriton(torch.autograd.Function): - - @staticmethod - @custom_fwd(cast_inputs=torch.float16) - def forward(ctx, x, qweight, scales, qzeros, g_idx, bits, maxq): - output = tu.triton_matmul(x, qweight, scales, qzeros, g_idx, bits, maxq) - ctx.save_for_backward(qweight, scales, qzeros, g_idx) - ctx.bits, ctx.maxq = bits, maxq - output = output.clone() - return output - - @staticmethod - @custom_bwd - def backward(ctx, grad_output): - qweight, scales, qzeros, g_idx = ctx.saved_tensors - bits, maxq = ctx.bits, ctx.maxq - grad_input = None - - if ctx.needs_input_grad[0]: - grad_input = tu.triton_matmul_transpose(grad_output, qweight, scales, qzeros, g_idx, bits, maxq) - return grad_input, None, None, None, None, None, None - -except ImportError: - print('Triton not found. Please run "pip install triton".') - - -AutogradMatmul4bit = AutogradMatmul4bitCuda -backend = 'cuda' - - -def switch_backend_to(to_backend): - global AutogradMatmul4bit - global backend - if to_backend == 'cuda': - AutogradMatmul4bit = AutogradMatmul4bitCuda - backend = 'cuda' - print(Style.BRIGHT + Fore.GREEN + 'Using CUDA implementation.') - elif to_backend == 'triton': - # detect if AutogradMatmul4bitTriton is defined - if 'AutogradMatmul4bitTriton' not in globals(): - raise ValueError('Triton not found. Please install triton_utils.') - AutogradMatmul4bit = AutogradMatmul4bitTriton - backend = 'triton' - print(Style.BRIGHT + Fore.GREEN + 'Using Triton implementation.') - else: - raise ValueError('Backend not supported.') - - -def matmul4bit_with_backend(x, qweight, scales, qzeros, g_idx, bits, maxq): - if backend == 'cuda': - return mm4b.matmul4bit(x, qweight, scales, qzeros, g_idx) - elif backend == 'triton': - assert qzeros.dtype == torch.int32 - return tu.triton_matmul(x, qweight, scales, qzeros, g_idx, bits, maxq) - else: - raise ValueError('Backend not supported.') - - -# Assumes layer is perfectly divisible into 256 * 256 blocks -class Autograd4bitQuantLinear(nn.Module): - - def __init__(self, in_features, out_features, groupsize=-1, is_v1_model=False): - super().__init__() - bits = 4 - self.in_features = in_features - self.out_features = out_features - self.bits = bits - self.maxq = 2 ** self.bits - 1 - groupsize = groupsize if groupsize != -1 else in_features - self.groupsize = groupsize - self.is_v1_model = is_v1_model - if is_v1_model: - self.register_buffer('zeros', torch.empty((out_features, 1))) - self.register_buffer('scales', torch.empty((out_features, 1))) - self.g_idx = None - else: - self.register_buffer('qzeros', - torch.empty((math.ceil(in_features/groupsize), out_features // 256 * (bits * 8)), dtype=torch.int32) - ) - self.register_buffer('scales', torch.empty((math.ceil(in_features/groupsize), out_features))) - self.register_buffer('g_idx', torch.tensor([i // self.groupsize for i in range(in_features)], dtype = torch.int32)) - self.register_buffer('bias', torch.empty(out_features)) - self.register_buffer( - 'qweight', torch.empty((in_features // 256 * (bits * 8), out_features), dtype=torch.int32) - ) - - - def forward(self, x): - if torch.is_grad_enabled(): - out = AutogradMatmul4bit.apply(x, self.qweight, self.scales, - self.qzeros if not self.is_v1_model else self.zeros, - self.g_idx, self.bits, self.maxq) - else: - out = matmul4bit_with_backend(x, self.qweight, self.scales, - self.qzeros if not self.is_v1_model else self.zeros, - self.g_idx, self.bits, self.maxq) - out += self.bias - return out - - -def make_quant_for_4bit_autograd(module, names, name='', groupsize=-1, is_v1_model=False): - if isinstance(module, Autograd4bitQuantLinear): - return - for attr in dir(module): - tmp = getattr(module, attr) - name1 = name + '.' + attr if name != '' else attr - if name1 in names: - setattr( - module, attr, Autograd4bitQuantLinear(tmp.in_features, tmp.out_features, groupsize=groupsize, is_v1_model=is_v1_model) - ) - for name1, child in module.named_children(): - make_quant_for_4bit_autograd(child, names, name + '.' + name1 if name != '' else name1, groupsize=groupsize, is_v1_model=is_v1_model) - - -def model_to_half(model): - model.half() - for n, m in model.named_modules(): - if isinstance(m, Autograd4bitQuantLinear): - if m.is_v1_model: - m.zeros = m.zeros.half() - m.scales = m.scales.half() - m.bias = m.bias.half() - print(Style.BRIGHT + Fore.YELLOW + 'Converted as Half.') - - -def model_to_float(model): - model.float() - for n, m in model.named_modules(): - if isinstance(m, Autograd4bitQuantLinear): - if m.is_v1_model: - m.zeros = m.zeros.float() - m.scales = m.scales.float() - m.bias = m.bias.float() - print(Style.BRIGHT + Fore.YELLOW + 'Converted as Float.') - - -def find_layers(module, layers=[nn.Conv2d, nn.Linear], name=''): - if type(module) in layers: - return {name: module} - res = {} - for name1, child in module.named_children(): - res.update(find_layers( - child, layers=layers, name=name + '.' + name1 if name != '' else name1 - )) - return res - - -def load_llama_model_4bit_low_ram(config_path, model_path, groupsize=-1, half=False, device_map="auto", seqlen=2048, is_v1_model=False): - import accelerate - from transformers import LlamaConfig, LlamaForCausalLM, LlamaTokenizer - - print(Style.BRIGHT + Fore.CYAN + "Loading Model ...") - t0 = time.time() - - with accelerate.init_empty_weights(): - config = LlamaConfig.from_pretrained(config_path) - model = LlamaForCausalLM(config) - model = model.eval() - layers = find_layers(model) - for name in ['lm_head']: - if name in layers: - del layers[name] - make_quant_for_4bit_autograd(model, layers, groupsize=groupsize, is_v1_model=is_v1_model) - model = accelerate.load_checkpoint_and_dispatch( - model=model, - checkpoint=model_path, - device_map=device_map, - no_split_module_classes=["LlamaDecoderLayer"] - ) - - model.seqlen = seqlen - - if half: - model_to_half(model) - - tokenizer = LlamaTokenizer.from_pretrained(config_path) - tokenizer.truncation_side = 'left' - - print(Style.BRIGHT + Fore.GREEN + f"Loaded the model in {(time.time()-t0):.2f} seconds.") - - return model, tokenizer - -def load_llama_model_4bit_low_ram_and_offload(config_path, model_path, lora_path=None, groupsize=-1, seqlen=2048, max_memory=None, is_v1_model=False): - import accelerate - from transformers import LlamaConfig, LlamaForCausalLM, LlamaTokenizer - - if max_memory is None: - max_memory = {0: '24Gib', 'cpu': '48Gib'} - - print(Style.BRIGHT + Fore.CYAN + "Loading Model ...") - t0 = time.time() - - with accelerate.init_empty_weights(): - config = LlamaConfig.from_pretrained(config_path) - model = LlamaForCausalLM(config) - model = model.eval() - layers = find_layers(model) - for name in ['lm_head']: - if name in layers: - del layers[name] - make_quant_for_4bit_autograd(model, layers, groupsize=groupsize, is_v1_model=is_v1_model) - accelerate.load_checkpoint_in_model(model, checkpoint=model_path, device_map={'': 'cpu'}) - - # rotary_emb fix - for n, m in model.named_modules(): - if 'rotary_emb' in n: - cos_cached = m.cos_cached.clone().cpu() - sin_cached = m.sin_cached.clone().cpu() - break - - if lora_path is not None: - from peft import PeftModel - from peft.tuners.lora import Linear4bitLt - model = PeftModel.from_pretrained(model, lora_path, device_map={'': 'cpu'}, torch_dtype=torch.float32) - print(Style.BRIGHT + Fore.GREEN + '{} Lora Applied.'.format(lora_path)) - - model.seqlen = seqlen - - print('Apply half ...') - for n, m in model.named_modules(): - if isinstance(m, Autograd4bitQuantLinear) or ((lora_path is not None) and isinstance(m, Linear4bitLt)): - if m.is_v1_model: - m.zeros = m.zeros.half() - m.scales = m.scales.half() - m.bias = m.bias.half() - - print('Dispatching model ...') - device_map = accelerate.infer_auto_device_map(model, max_memory=max_memory, no_split_module_classes=["LlamaDecoderLayer"]) - model = accelerate.dispatch_model(model, device_map=device_map, offload_buffers=True, main_device=0) - torch.cuda.empty_cache() - print(Style.BRIGHT + Fore.YELLOW + 'Total {:.2f} Gib VRAM used.'.format(torch.cuda.memory_allocated() / 1024 / 1024)) - - # rotary_emb fix - for n, m in model.named_modules(): - if 'rotary_emb' in n: - if getattr(m, '_hf_hook', None): - if isinstance(m._hf_hook, accelerate.hooks.SequentialHook): - hooks = m._hf_hook.hooks - else: - hooks = [m._hf_hook] - for hook in hooks: - if hook.offload: - if n + '.sin_cached' not in hook.weights_map.dataset.state_dict.keys(): - hook.weights_map.dataset.state_dict[n + '.sin_cached'] = sin_cached.clone().cpu() - hook.weights_map.dataset.state_dict[n + '.cos_cached'] = cos_cached.clone().cpu() - - tokenizer = LlamaTokenizer.from_pretrained(config_path) - tokenizer.truncation_side = 'left' - - print(Style.BRIGHT + Fore.GREEN + f"Loaded the model in {(time.time()-t0):.2f} seconds.") - - return model, tokenizer - -load_llama_model_4bit_low_ram_and_offload_to_cpu = load_llama_model_4bit_low_ram_and_offload +""" +from https://raw.githubusercontent.com/johnsmith0031/alpaca_lora_4bit/main/autograd_4bit.py +""" +import matmul_utils_4bit as mm4b +import torch +import torch.nn as nn +import time +import math +from torch.cuda.amp import custom_bwd, custom_fwd +from colorama import init, Fore, Back, Style +init(autoreset=True) + + +class AutogradMatmul4bitCuda(torch.autograd.Function): + + @staticmethod + @custom_fwd(cast_inputs=torch.float16) + def forward(ctx, x, qweight, scales, zeros, g_idx, bits, maxq): + ctx.save_for_backward(qweight, scales, zeros, g_idx) + if g_idx is None: + output = mm4b._matmul4bit_v1_recons(x, qweight, scales, zeros) + else: + output = mm4b._matmul4bit_v2_recons(x, qweight, scales, zeros, g_idx) + output = output.clone() + return output + + @staticmethod + @custom_bwd + def backward(ctx, grad_output): + qweight, scales, zeros, g_idx = ctx.saved_tensors + if ctx.needs_input_grad[0]: + if g_idx is None: + grad = mm4b._matmul4bit_v1_recons(grad_output, qweight, scales, zeros, transpose=True) + else: + grad = mm4b._matmul4bit_v2_recons(grad_output, qweight, scales, zeros, g_idx, transpose=True) + return grad, None, None, None, None, None, None + + +try: + import triton_utils as tu + + class AutogradMatmul4bitTriton(torch.autograd.Function): + + @staticmethod + @custom_fwd(cast_inputs=torch.float16) + def forward(ctx, x, qweight, scales, qzeros, g_idx, bits, maxq): + output = tu.triton_matmul(x, qweight, scales, qzeros, g_idx, bits, maxq) + ctx.save_for_backward(qweight, scales, qzeros, g_idx) + ctx.bits, ctx.maxq = bits, maxq + output = output.clone() + return output + + @staticmethod + @custom_bwd + def backward(ctx, grad_output): + qweight, scales, qzeros, g_idx = ctx.saved_tensors + bits, maxq = ctx.bits, ctx.maxq + grad_input = None + + if ctx.needs_input_grad[0]: + grad_input = tu.triton_matmul_transpose(grad_output, qweight, scales, qzeros, g_idx, bits, maxq) + return grad_input, None, None, None, None, None, None + +except ImportError: + print('Triton not found. Please run "pip install triton".') + + +AutogradMatmul4bit = AutogradMatmul4bitCuda +backend = 'cuda' + + +def switch_backend_to(to_backend): + global AutogradMatmul4bit + global backend + if to_backend == 'cuda': + AutogradMatmul4bit = AutogradMatmul4bitCuda + backend = 'cuda' + print(Style.BRIGHT + Fore.GREEN + 'Using CUDA implementation.') + elif to_backend == 'triton': + # detect if AutogradMatmul4bitTriton is defined + if 'AutogradMatmul4bitTriton' not in globals(): + raise ValueError('Triton not found. Please install triton_utils.') + AutogradMatmul4bit = AutogradMatmul4bitTriton + backend = 'triton' + print(Style.BRIGHT + Fore.GREEN + 'Using Triton implementation.') + else: + raise ValueError('Backend not supported.') + + +def matmul4bit_with_backend(x, qweight, scales, qzeros, g_idx, bits, maxq): + if backend == 'cuda': + return mm4b.matmul4bit(x, qweight, scales, qzeros, g_idx) + elif backend == 'triton': + assert qzeros.dtype == torch.int32 + return tu.triton_matmul(x, qweight, scales, qzeros, g_idx, bits, maxq) + else: + raise ValueError('Backend not supported.') + + +# Assumes layer is perfectly divisible into 256 * 256 blocks +class Autograd4bitQuantLinear(nn.Module): + + def __init__(self, in_features, out_features, groupsize=-1, is_v1_model=False): + super().__init__() + bits = 4 + self.in_features = in_features + self.out_features = out_features + self.bits = bits + self.maxq = 2 ** self.bits - 1 + groupsize = groupsize if groupsize != -1 else in_features + self.groupsize = groupsize + self.is_v1_model = is_v1_model + if is_v1_model: + self.register_buffer('zeros', torch.empty((out_features, 1))) + self.register_buffer('scales', torch.empty((out_features, 1))) + self.g_idx = None + else: + self.register_buffer('qzeros', + torch.empty((math.ceil(in_features/groupsize), out_features // 256 * (bits * 8)), dtype=torch.int32) + ) + self.register_buffer('scales', torch.empty((math.ceil(in_features/groupsize), out_features))) + self.register_buffer('g_idx', torch.tensor([i // self.groupsize for i in range(in_features)], dtype = torch.int32)) + self.register_buffer('bias', torch.empty(out_features)) + self.register_buffer( + 'qweight', torch.empty((in_features // 256 * (bits * 8), out_features), dtype=torch.int32) + ) + + + def forward(self, x): + if torch.is_grad_enabled(): + out = AutogradMatmul4bit.apply(x, self.qweight, self.scales, + self.qzeros if not self.is_v1_model else self.zeros, + self.g_idx, self.bits, self.maxq) + else: + out = matmul4bit_with_backend(x, self.qweight, self.scales, + self.qzeros if not self.is_v1_model else self.zeros, + self.g_idx, self.bits, self.maxq) + out += self.bias + return out + + +def make_quant_for_4bit_autograd(module, names, name='', groupsize=-1, is_v1_model=False): + if isinstance(module, Autograd4bitQuantLinear): + return + for attr in dir(module): + tmp = getattr(module, attr) + name1 = name + '.' + attr if name != '' else attr + if name1 in names: + setattr( + module, attr, Autograd4bitQuantLinear(tmp.in_features, tmp.out_features, groupsize=groupsize, is_v1_model=is_v1_model) + ) + for name1, child in module.named_children(): + make_quant_for_4bit_autograd(child, names, name + '.' + name1 if name != '' else name1, groupsize=groupsize, is_v1_model=is_v1_model) + + +def model_to_half(model): + model.half() + for n, m in model.named_modules(): + if isinstance(m, Autograd4bitQuantLinear): + if m.is_v1_model: + m.zeros = m.zeros.half() + m.scales = m.scales.half() + m.bias = m.bias.half() + print(Style.BRIGHT + Fore.YELLOW + 'Converted as Half.') + + +def model_to_float(model): + model.float() + for n, m in model.named_modules(): + if isinstance(m, Autograd4bitQuantLinear): + if m.is_v1_model: + m.zeros = m.zeros.float() + m.scales = m.scales.float() + m.bias = m.bias.float() + print(Style.BRIGHT + Fore.YELLOW + 'Converted as Float.') + + +def find_layers(module, layers=[nn.Conv2d, nn.Linear], name=''): + if type(module) in layers: + return {name: module} + res = {} + for name1, child in module.named_children(): + res.update(find_layers( + child, layers=layers, name=name + '.' + name1 if name != '' else name1 + )) + return res + + +def load_llama_model_4bit_low_ram(config_path, model_path, groupsize=-1, half=False, device_map="auto", seqlen=2048, is_v1_model=False): + import accelerate + from transformers import LlamaConfig, LlamaForCausalLM, LlamaTokenizer + + print(Style.BRIGHT + Fore.CYAN + "Loading Model ...") + t0 = time.time() + + with accelerate.init_empty_weights(): + config = LlamaConfig.from_pretrained(config_path) + model = LlamaForCausalLM(config) + model = model.eval() + layers = find_layers(model) + for name in ['lm_head']: + if name in layers: + del layers[name] + make_quant_for_4bit_autograd(model, layers, groupsize=groupsize, is_v1_model=is_v1_model) + model = accelerate.load_checkpoint_and_dispatch( + model=model, + checkpoint=model_path, + device_map=device_map, + no_split_module_classes=["LlamaDecoderLayer"] + ) + + model.seqlen = seqlen + + if half: + model_to_half(model) + + tokenizer = LlamaTokenizer.from_pretrained(config_path) + tokenizer.truncation_side = 'left' + + print(Style.BRIGHT + Fore.GREEN + f"Loaded the model in {(time.time()-t0):.2f} seconds.") + + return model, tokenizer + +def load_llama_model_4bit_low_ram_and_offload(config_path, model_path, lora_path=None, groupsize=-1, seqlen=2048, max_memory=None, is_v1_model=False): + import accelerate + from transformers import LlamaConfig, LlamaForCausalLM, LlamaTokenizer + + if max_memory is None: + max_memory = {0: '24Gib', 'cpu': '48Gib'} + + print(Style.BRIGHT + Fore.CYAN + "Loading Model ...") + t0 = time.time() + + with accelerate.init_empty_weights(): + config = LlamaConfig.from_pretrained(config_path) + model = LlamaForCausalLM(config) + model = model.eval() + layers = find_layers(model) + for name in ['lm_head']: + if name in layers: + del layers[name] + make_quant_for_4bit_autograd(model, layers, groupsize=groupsize, is_v1_model=is_v1_model) + accelerate.load_checkpoint_in_model(model, checkpoint=model_path, device_map={'': 'cpu'}) + + # rotary_emb fix + for n, m in model.named_modules(): + if 'rotary_emb' in n: + cos_cached = m.cos_cached.clone().cpu() + sin_cached = m.sin_cached.clone().cpu() + break + + if lora_path is not None: + from peft import PeftModel + from peft.tuners.lora import Linear4bitLt + model = PeftModel.from_pretrained(model, lora_path, device_map={'': 'cpu'}, torch_dtype=torch.float32) + print(Style.BRIGHT + Fore.GREEN + '{} Lora Applied.'.format(lora_path)) + + model.seqlen = seqlen + + print('Apply half ...') + for n, m in model.named_modules(): + if isinstance(m, Autograd4bitQuantLinear) or ((lora_path is not None) and isinstance(m, Linear4bitLt)): + if m.is_v1_model: + m.zeros = m.zeros.half() + m.scales = m.scales.half() + m.bias = m.bias.half() + + print('Dispatching model ...') + device_map = accelerate.infer_auto_device_map(model, max_memory=max_memory, no_split_module_classes=["LlamaDecoderLayer"]) + model = accelerate.dispatch_model(model, device_map=device_map, offload_buffers=True, main_device=0) + torch.cuda.empty_cache() + print(Style.BRIGHT + Fore.YELLOW + 'Total {:.2f} Gib VRAM used.'.format(torch.cuda.memory_allocated() / 1024 / 1024)) + + # rotary_emb fix + for n, m in model.named_modules(): + if 'rotary_emb' in n: + if getattr(m, '_hf_hook', None): + if isinstance(m._hf_hook, accelerate.hooks.SequentialHook): + hooks = m._hf_hook.hooks + else: + hooks = [m._hf_hook] + for hook in hooks: + if hook.offload: + if n + '.sin_cached' not in hook.weights_map.dataset.state_dict.keys(): + hook.weights_map.dataset.state_dict[n + '.sin_cached'] = sin_cached.clone().cpu() + hook.weights_map.dataset.state_dict[n + '.cos_cached'] = cos_cached.clone().cpu() + + tokenizer = LlamaTokenizer.from_pretrained(config_path) + tokenizer.truncation_side = 'left' + + print(Style.BRIGHT + Fore.GREEN + f"Loaded the model in {(time.time()-t0):.2f} seconds.") + + return model, tokenizer + +load_llama_model_4bit_low_ram_and_offload_to_cpu = load_llama_model_4bit_low_ram_and_offload diff --git a/custom_autotune.py b/custom_autotune.py deleted file mode 100644 index 8bafea7..0000000 --- a/custom_autotune.py +++ /dev/null @@ -1,167 +0,0 @@ -#https://github.com/fpgaminer/GPTQ-triton -""" -Mostly the same as the autotuner in Triton, but with a few changes like using 40 runs instead of 100. -""" - -import builtins -import math -import time -from typing import Dict - -import triton - - -class Autotuner(triton.KernelInterface): - def __init__(self, fn, arg_names, configs, key, reset_to_zero, prune_configs_by: Dict = None, nearest_power_of_two: bool = False): - ''' - :param prune_configs_by: a dict of functions that are used to prune configs, fields: - 'perf_model': performance model used to predicate running time with different configs, returns running time - 'top_k': number of configs to bench - 'prune_num_stages_by'(optional): a function used to prune num_stages. It take configs:List[Config] as its input, and returns pruned configs. - 'nearest_power_of_two'(optional): whether to round key arguments to the nearest power of two when caching tuning results - ''' - if not configs: - self.configs = [triton.Config({}, num_warps=4, num_stages=2)] - else: - self.configs = configs - self.key_idx = [arg_names.index(k) for k in key] - self.nearest_power_of_two = nearest_power_of_two - self.cache = {} - # hook to reset all required tensor to zeros before relaunching a kernel - self.hook = lambda args: 0 - if reset_to_zero is not None: - self.reset_idx = [arg_names.index(k) for k in reset_to_zero] - - def _hook(args): - for i in self.reset_idx: - args[i].zero_() - self.hook = _hook - self.arg_names = arg_names - # prune configs - if prune_configs_by: - perf_model, top_k = prune_configs_by['perf_model'], prune_configs_by['top_k'] - if 'early_config_prune' in prune_configs_by: - early_config_prune = prune_configs_by['early_config_prune'] - else: - perf_model, top_k, early_config_prune = None, None, None - self.perf_model, self.configs_top_k = perf_model, top_k - self.early_config_prune = early_config_prune - self.fn = fn - - def _bench(self, *args, config, **meta): - # check for conflicts, i.e. meta-parameters both provided - # as kwargs and by the autotuner - conflicts = meta.keys() & config.kwargs.keys() - if conflicts: - raise ValueError( - f"Conflicting meta-parameters: {', '.join(conflicts)}." - " Make sure that you don't re-define auto-tuned symbols." - ) - # augment meta-parameters with tunable ones - current = dict(meta, **config.kwargs) - - def kernel_call(): - if config.pre_hook: - config.pre_hook(self.nargs) - self.hook(args) - self.fn.run(*args, num_warps=config.num_warps, num_stages=config.num_stages, **current) - try: - # In testings using only 40 reps seems to be close enough and it appears to be what PyTorch uses - # PyTorch also sets fast_flush to True, but I didn't see any speedup so I'll leave the default - return triton.testing.do_bench(kernel_call, rep=40) - except triton.compiler.OutOfResources: - return float('inf') - - def run(self, *args, **kwargs): - self.nargs = dict(zip(self.arg_names, args)) - if len(self.configs) > 1: - key = tuple(args[i] for i in self.key_idx) - - # This reduces the amount of autotuning by rounding the keys to the nearest power of two - # In my testing this gives decent results, and greatly reduces the amount of tuning required - if self.nearest_power_of_two: - key = tuple([2 ** int(math.log2(x) + 0.5) for x in key]) - - if key not in self.cache: - # prune configs - pruned_configs = self.prune_configs(kwargs) - bench_start = time.time() - timings = {config: self._bench(*args, config=config, **kwargs) - for config in pruned_configs} - bench_end = time.time() - self.bench_time = bench_end - bench_start - self.cache[key] = builtins.min(timings, key=timings.get) - self.hook(args) - self.configs_timings = timings - config = self.cache[key] - else: - config = self.configs[0] - self.best_config = config - if config.pre_hook is not None: - config.pre_hook(self.nargs) - return self.fn.run(*args, num_warps=config.num_warps, num_stages=config.num_stages, **kwargs, **config.kwargs) - - def prune_configs(self, kwargs): - pruned_configs = self.configs - if self.early_config_prune: - pruned_configs = self.early_config_prune(self.configs, self.nargs) - if self.perf_model: - top_k = self.configs_top_k - if isinstance(top_k, float) and top_k <= 1.0: - top_k = int(len(self.configs) * top_k) - if len(pruned_configs) > top_k: - est_timing = { - config: self.perf_model(**self.nargs, **kwargs, **config.kwargs, num_stages=config.num_stages, - num_warps=config.num_warps) - for config in pruned_configs - } - pruned_configs = sorted(est_timing.keys(), key=lambda x: est_timing[x])[:top_k] - return pruned_configs - - def warmup(self, *args, **kwargs): - self.nargs = dict(zip(self.arg_names, args)) - for config in self.prune_configs(kwargs): - self.fn.warmup( - *args, - num_warps=config.num_warps, - num_stages=config.num_stages, - **kwargs, - **config.kwargs, - ) - self.nargs = None - - -def autotune(configs, key, prune_configs_by=None, reset_to_zero=None, nearest_power_of_two=False): - """ - Decorator for auto-tuning a :code:`triton.jit`'d function. - .. highlight:: python - .. code-block:: python - @triton.autotune(configs=[ - triton.Config(meta={'BLOCK_SIZE': 128}, num_warps=4), - triton.Config(meta={'BLOCK_SIZE': 1024}, num_warps=8), - ], - key=['x_size'] # the two above configs will be evaluated anytime - # the value of x_size changes - ) - @triton.jit - def kernel(x_ptr, x_size, **META): - BLOCK_SIZE = META['BLOCK_SIZE'] - :note: When all the configurations are evaluated, the kernel will run multiple time. - This means that whatever value the kernel updates will be updated multiple times. - To avoid this undesired behavior, you can use the `reset_to_zero` argument, which - reset the value of the provided tensor to `zero` before running any configuration. - :param configs: a list of :code:`triton.Config` objects - :type configs: list[triton.Config] - :param key: a list of argument names whose change in value will trigger the evaluation of all provided configs. - :type key: list[str] - :param prune_configs_by: a dict of functions that are used to prune configs, fields: - 'perf_model': performance model used to predicate running time with different configs, returns running time - 'top_k': number of configs to bench - 'early_config_prune'(optional): a function used to do early prune (eg, num_stages). It take configs:List[Config] as its input, and returns pruned configs. - :param reset_to_zero: a list of argument names whose value will be reset to zero before evaluating any configs. - :type reset_to_zero: list[str] - """ - def decorator(fn): - return Autotuner(fn, fn.arg_names, configs, key, reset_to_zero, prune_configs_by, nearest_power_of_two) - - return decorator diff --git a/data.txt b/data.txt deleted file mode 100644 index 947c6e9..0000000 --- a/data.txt +++ /dev/null @@ -1,106 +0,0 @@ -The alpaca (Lama pacos) is a species of South American camelid mammal. It is similar to, and often confused with, the llama. However, alpacas are often noticeably smaller than llamas. The two animals are closely related and can successfully crossbreed. Both species are believed to have been domesticated from their wild relatives, the vicuña and guanaco. There are two breeds of alpaca: the Suri alpaca and the Huacaya alpaca. - -Alpacas are kept in herds that graze on the level heights of the Andes of Southern Peru, Western Bolivia, Ecuador, and Northern Chile at an altitude of 3,500 to 5,000 metres (11,000 to 16,000 feet) above sea level.[1] Alpacas are considerably smaller than llamas, and unlike llamas, they were not bred to be working animals, but were bred specifically for their fiber. - -Alpaca fiber is used for making knitted and woven items, similar to sheep's wool. These items include blankets, sweaters, hats, gloves, scarves, a wide variety of textiles, and ponchos, in South America, as well as sweaters, socks, coats, and bedding in other parts of the world. The fiber comes in more than 52 natural colors as classified in Peru, 12 as classified in Australia, and 16 as classified in the United States. - -Alpacas communicate through body language. The most common is spitting to show dominance[2] when they are in distress, fearful, or feel agitated. Male alpacas are more aggressive than females, and tend to establish dominance within their herd group. In some cases, alpha males will immobilize the head and neck of a weaker or challenging male in order to show their strength and dominance. - -In the textile industry, "alpaca" primarily refers to the hair of Peruvian alpacas, but more broadly it refers to a style of fabric originally made from alpaca hair, such as mohair, Icelandic sheep wool, or even high-quality wool from other breeds of sheep. In trade, distinctions are made between alpacas and the several styles of mohair and luster.[3] - -An adult alpaca generally is between 81 and 99 centimetres (32 and 39 inches) in height at the shoulders (withers). They usually weigh between 48 and 90 kilograms (106 and 198 pounds).[4] Raised in the same conditions, the difference in weight can be small with males weighting around 22.3 kilograms (49 lb 3 oz) and females 21.3 kilograms (46 lb 15 oz).[5] - -The relationship between alpacas and vicuñas was disputed for many years. In the 18th and 19th centuries, the four South American lamoid species were assigned scientific names. At that time, the alpaca was assumed to be descended from the llama, ignoring similarities in size, fleece and dentition between the alpaca and the vicuña. Classification was complicated by the fact that all four species of South American camelid can interbreed and produce fertile offspring.[6] The advent of DNA technology made a more accurate classification possible. - -In 2001, the alpaca genus classification changed from Lama pacos to Vicugna pacos, following the presentation of a paper[7] on work by Miranda Kadwell et al. on alpaca DNA to the Royal Society showing the alpaca is descended from the vicuña, not the guanaco. - -Alpacas were domesticated thousands of years ago. The Moche people of Northern Peru often used alpaca images in their art.[8] There are no known wild alpacas, and its closest living relative, the vicuña (also native to South America), is the wild ancestor of the alpaca. - -The family Camelidae first appeared in Americas 40–45 million years ago, during the Eocene period, from the common ancestor, Protylopus. The descendants divided into Camelini and Lamini tribes, taking different migratory patterns to Asia and South America, respectively. Although the camelids became extinct in North America around 3 million years ago, it flourished in the South with the species we see today.[9] It was not until 2–5 million years ago, during the Pliocene, that the genus Hemiauchenia of the tribe Lamini split into Palaeolama and Lama; the latter would then split again into Lama and Vicugna upon migrating down to South America. - -Remains of vicuña and guanaco have been found throughout Peru for around 12,000 years. Their domesticated counterparts, the llama and alpacas, have been found mummified in the Moquegua valley, in the south of Peru, dating back 900 to 1000 years. Mummies found in this region show two breeds of alpacas. More precise analysis of bone and teeth of these mummies has demonstrated that alpacas were domesticated from the Vicugna vicugna. Other research, considering the behavioral and morphological characteristics of alpacas and their wild counterparts, seems to indicate that alpacas could find their origins in Lama guanicoe as well as Vicugna vicugna, or even a hybrid of both. - -Genetic analysis shows a different picture of the origins of the alpaca. Analysis of mitochondrial DNA shows that most alpacas have guanaco mtDNA, and many also have vicuña mtDNA. But microsatellite data shows that alpaca DNA is much more similar to vicuña DNA than to guanaco DNA. This suggests that alpacas are descendants of the Vicugna vicugna, not of the Lama guanicoe. The discrepancy with mtDNA seems to be a result of the fact that mtDNA is only transmitted by the mother, and recent husbandry practices have caused hybridization between llamas (which primarily carry guanaco DNA) and alpacas. To the extent that many of today's domestic alpacas are the result of male alpacas bred to female llamas, this would explain the mtDNA consistent with guanacos. This situation has led to attempts to reclassify the alpaca as Vicugna pacos.[7] - -The alpaca comes in two breeds, Suri and Huacaya, based on their fibers rather than scientific or European classifications. - -Huacaya alpacas are the most commonly found, constituting about 90% of the population.[10] The Huacaya alpaca is thought to have originated in post-colonial Peru. This is due to their thicker fleece which makes them more suited to survive in the higher altitudes of the Andes after being pushed into the highlands of Peru with the arrival of the Spanish.[11][better source needed] - -Suri alpacas represent a smaller portion of the total alpaca population, around 10%.[10] They are thought to have been more prevalent in pre-Columbian Peru since they could be kept at a lower altitude where a thicker fleece was not needed for harsh weather conditions.[11][better source needed] - -Alpacas are social herd animals that live in family groups, consisting of a territorial alpha male, females, and their young ones. Alpacas warn the herd about intruders by making sharp, noisy inhalations that sound like a high-pitched bray. The herd may attack smaller predators with their front feet and can spit and kick. Their aggression towards members of the canid family (coyotes, foxes, dogs etc.) is exploited when alpacas are used as guard llamas for guarding sheep.[12][13] - -Alpacas can sometimes be aggressive, but they can also be very gentle, intelligent, and extremely observant. For the most part, alpacas are very quiet, but male alpacas are more energetic when they get involved in fighting with other alpacas.[14] When they prey, they are cautious but also nervous when they feel any type of threat. They can feel threatened when a person or another alpaca comes up from behind them.[15][better source needed] - -Alpacas set their own boundaries of "personal space" within their families and groups.[16] They make a hierarchy in some sense, and each alpaca is aware of the dominant animals in each group.[14] Body language is the key to their communication. It helps to maintain their order. One example of their body communication includes a pose named broadside, where their ears are pulled back and they stand sideways. This pose is used when male alpacas are defending their territory.[2] - -When they are young, they tend to follow larger objects and to sit near or under them. An example of this is a baby alpaca with its mother. This can also apply when an alpaca passes by an older alpaca.[16] - -Training -Alpacas are generally very trainable and usually respond to reward, most commonly in the form of food. They can usually be petted without getting agitated, especially if one avoids petting the head or neck. Alpacas are usually quite easy to herd, even in large groups. However, during herding, it is recommended for the handler to approach the animals slowly and quietly, as failing to do so can result in danger for both the animals and the handler.[17] - -Alpacas and llamas have started showing up in U.S. nursing homes and hospitals as trained, certified therapy animals. The Mayo Clinic says animal-assisted therapy can reduce pain, depression, anxiety, and fatigue. This type of animal therapy is growing in popularity, and there are several organizations throughout the United States that participate.[18] - -Spitting -Not all alpacas spit, but all are capable of doing so. "Spit" is somewhat euphemistic; occasionally the projectile contains only air and a little saliva, although alpacas commonly bring up acidic stomach contents (generally a green, grassy mix) and project it onto their chosen targets. Spitting is mostly reserved for other alpacas, but an alpaca will also occasionally spit at a human. - -Spitting can result in what is called "sour mouth". Sour mouth is characterized by "a loose-hanging lower lip and a gaping mouth."[19] - -Alpacas can spit for several reasons. A female alpaca spits when she is not interested in a male alpaca, typically when she thinks that she is already impregnated. Both sexes of alpaca keep others away from their food, or anything they have their eyes on. Most give a slight warning before spitting by blowing air out and raising their heads, giving their ears a "pinned" appearance.[16] - -Alpacas can spit up to ten feet if they need to. For example, if another animal does not back off, the alpaca will throw up its stomach contents, resulting in a lot of spit.[20] - -Some signs of stress which can lead to their spitting habits include: humming, a wrinkle under their eye, drooling, rapid breathing, and stomping their feet. When alpacas show any sign of interest or alertness, they tend to sniff their surroundings, watch closely, or stand quietly in place and stare.[20] - -When it comes to reproduction, they spit because it is a response triggered by the progesterone levels being increased, which is associated with ovulation.[21] - -Hygiene -Alpacas use a communal dung pile,[22] where they do not graze. This behaviour tends to limit the spread of internal parasites. Generally, males have much tidier, and fewer dung piles than females, which tend to stand in a line and all go at once. One female approaches the dung pile and begins to urinate and/or defecate, and the rest of the herd often follows. Alpaca waste is collected and used as garden fertilizer or even natural fertilizer.[2] - -Because of their preference for using a dung pile for excreting bodily waste, some alpacas have been successfully house-trained.[23] - -Alpacas develop dental hygiene problems which affect their eating and behavior. Warning signs include protracted chewing while eating, or food spilling out of their mouths. Poor body condition and sunken cheeks are also telltales of dental problems. - -Alpacas make a variety of sounds: - -Humming: When alpacas are born, the mother and baby hum constantly. They also hum as a sign of distress, especially when they are separated from their herd. Alpacas may also hum when curious, happy, worried or cautious. -Snorting: Alpacas snort when another alpaca is invading its space. -Grumbling: Alpacas grumble to warn each other. For example, when one is invading another's personal space, it sounds like gurgling. -Clucking: Similar to a hen's cluck, alpacas cluck when a mother is concerned for her cria. Male alpacas cluck to signal friendly behavior.[2] -Screaming: Their screams are extremely deafening and loud. They will scream when they are not handled correctly or when they are being attacked by a potential enemy. -Screeching: A bird-like cry, presumably intended to terrify the opponent. This sound is typically used by male alpacas when they are in a fight over dominance. When a female screeches, it is more of a growl when she is angry. - -Females are induced ovulators;[24] meaning the act of mating and the presence of semen causes them to ovulate. Females usually conceive after just one breeding, but occasionally do have trouble conceiving. Artificial insemination is technically difficult, expensive and not common, but it can be accomplished. Embryo transfer is more widespread. - -A male is usually ready to mate for the first time between two and three years of age. It is not advisable to allow a young female to be bred until she is mature and has reached two-thirds of her mature weight. Over-breeding a young female before conception is possibly a common cause of uterine infections. As the age of maturation varies greatly between individuals, it is usually recommended that novice breeders wait until females are 18 months of age or older before initiating breeding.[25] - -Alpacas can breed at any time throughout the year but it is more difficult to breed in the winter. Most breed during autumn or late spring. The most popular way to have alpacas mate is pen mating. Pen mating is when they move both the female and the desired male into a pen. Another way is paddock mating where one male alpaca is let loose in the paddock with several female alpacas. - -The gestation period is, on average, 11.5 months, and usually results in a single offspring, or cria. Twins are rare, occurring about once per 1000 deliveries.[26] Cria are generally between 15 and 19 pounds, and are standing 30 to 90 minutes after birth.[27] After a female gives birth, she is generally receptive to breeding again after about two weeks. Crias may be weaned through human intervention at about six months old and 60 pounds, but many breeders prefer to allow the female to decide when to wean her offspring; they can be weaned earlier or later depending on their size and emotional maturity. - -The average lifespan of an alpaca is between 15–20 years, and the longest-lived alpaca on record is 27 years.[28] - -Cattle tuberculosis can also infect alpacas: Mycobacterium bovis also causes TB in this species worldwide.[29] Krajewska‐Wędzina et al., 2020 detect M. bovis in individuals traded from the United Kingdom to Poland.[29] To accomplish this they develop a seroassay which correctly identifies positive subjects which are false negative for a common skin test.[29] Krajewska‐Wędzina et al. also find that alpacas are unusual in mounting a competent early-infection immune response.[29] Bernitz et al., 2021 believe this to generalise to all camelids.[29] - -Alpacas can be found throughout most of South America.[30] They typically live in temperate conditions in the mountains with high altitudes. - -They are easy to care for since they are not limited to a specific type of environment. Animals such as flamingos, condors, spectacled bears, mountain lions, coyotes, llamas, and sheep live near alpacas when they are in their natural habitat. - -Alpacas are native to Peru, but can be found throughout the globe in captivity.[30] Peru currently has the largest alpaca population, with over half the world's animals.[31] The population declined drastically after the Spanish Conquistadors invaded the Andes mountains in 1532, after which 98% of the animals were destroyed. The Spanish also brought with them diseases that were fatal to alpacas.[32] - -European conquest forced the animals to move higher into the mountains,[how?] which remained there permanently. Although alpacas had almost been wiped out completely, they were rediscovered sometime during the 19th century by Europeans. After finding uses for them, the animals became important to societies during the industrial revolution.[33] - -Nuzzle and Scratch was a British children's television programme featuring two fictional alpacas that was first broadcast between 2008 and 2011.[34] - -Interest in alpacas grew as a result of Depp v. Heard, the 2022 trial in which Johnny Depp sued Amber Heard for defamation in Virginia after Heard wrote an op-ed saying she was a public victim of domestic violence. Depp testified, under oath, that he would not make another Pirates of the Caribbean film for "300 million dollars and a million alpacas".[35][36][37] - -Alpacas chew their food which ends up being mixed with their cud and saliva and then they swallow it. Alpacas usually eat 1.5% of their body weight daily for normal growth.[38] They mainly need pasture grass, hay, or silage but some may also need supplemental energy and protein foods and they will also normally try to chew on almost anything (e.g. empty bottle). Most alpaca ranchers rotate their feeding grounds so the grass can regrow and fecal parasites may die before reusing the area. Pasture grass is a great source of protein. When seasons change, the grass loses or gains more protein. For example, in the spring, the pasture grass has about 20% protein while in the summer, it only has 6%.[38] They need more energy supplements in the winter to produce body heat and warmth. They get their fiber from hay or from long stems which provides them with vitamin E. Green grass contains vitamin A and E. - -Alpacas can eat natural unfertilized grass; however, ranchers can also supplement grass with low-protein grass hay. To provide selenium and other necessary vitamins, ranchers will feed their domestic alpacas a daily dose of grain to provide additional nutrients that are not fully obtained from their primary diet.[39] Alpacas may obtain the necessary vitamins in their native grazing ranges. - -Alpacas, like other camelids, have a three-chambered stomach; combined with chewing cud, this three-chambered system allows maximum extraction of nutrients from low-quality forages. Alpacas are not ruminants, pseudo-ruminants, or modified ruminants, as there are many differences between the anatomy and physiology of a camelid and a ruminant stomach.[40] - -Alpacas will chew their food in a figure eight motion, swallow the food, and then pass it into one of the stomach's chambers. The first and second chambers (called C1 and C2) are anaerobic fermentation chambers where the fermentation process begins. The alpaca will further absorb nutrients and water in the first part of the third chamber. The end of the third chamber (called C3) is where the stomach secretes acids to digest food and is the likely place where an alpaca will have ulcers if stressed. - -Many plants are poisonous to the alpaca, including the bracken fern, Madagascar ragwort, oleander, and some azaleas. In common with similar livestock, others include acorns, African rue, agave, amaryllis, autumn crocus, bear grass, broom snakeweed, buckwheat, ragweed, buttercups, calla lily, orange tree foliage, carnations, castor beans, and many others.[41] - diff --git a/finetune.py b/finetune.py deleted file mode 100644 index ac72694..0000000 --- a/finetune.py +++ /dev/null @@ -1,178 +0,0 @@ -""" - llama-4b trainer with support of Stanford Alpaca-like JSON datasets (short for SAD) - Intended to use with https://github.com/johnsmith0031/alpaca_lora_4bit - - SAD structure: - [ - { - "instruction": "Give null hypothesis", - "input": "6 subjects were given a drug (treatment group) and an additional 6 subjects a placebo (control group).", - "output": "Drug is equivalent of placebo" - }, - { - "instruction": "What does RNA stand for?", - "input": "", - "output": "RNA stands for ribonucleic acid." - } - ] -""" -# Early load config to replace attn if needed -from arg_parser import get_config -ft_config = get_config() - -if ft_config.flash_attention: - from monkeypatch.llama_flash_attn_monkey_patch import replace_llama_attn_with_flash_attn - replace_llama_attn_with_flash_attn() - -import autograd_4bit -if ft_config.backend.lower() == 'triton': - autograd_4bit.switch_backend_to('triton') -else: - autograd_4bit.switch_backend_to('cuda') - -import sys - -import peft -import peft.tuners.lora -assert peft.tuners.lora.is_gptq_available() - -import torch -import transformers -from autograd_4bit import load_llama_model_4bit_low_ram -from peft import LoraConfig, get_peft_model, get_peft_model_state_dict, PeftModel - -# ! Config -import train_data - -# * Show loaded parameters -if ft_config.local_rank == 0: - print(f"{ft_config}\n") - -if ft_config.gradient_checkpointing: - print('Disable Dropout.') - -# Load Basic Model -model, tokenizer = load_llama_model_4bit_low_ram(ft_config.llama_q4_config_dir, - ft_config.llama_q4_model, - device_map=ft_config.device_map, - groupsize=ft_config.groupsize, - is_v1_model=ft_config.v1) - -# Config Lora -lora_config = LoraConfig( - r=ft_config.lora_r, - lora_alpha=ft_config.lora_alpha, - target_modules=["q_proj", "v_proj"], - lora_dropout=ft_config.lora_dropout, - bias="none", - task_type="CAUSAL_LM", -) -if ft_config.lora_apply_dir is None: - model = get_peft_model(model, lora_config) -else: - device_map = ft_config.device_map - if ft_config.ddp: - device_map = {'': 0} - else: - if torch.cuda.device_count() > 1: - device_map = "auto" - else: - device_map = {'': 0} - print('Device map for lora:', device_map) - model = PeftModel.from_pretrained(model, ft_config.lora_apply_dir, device_map=device_map, torch_dtype=torch.float32) - print(ft_config.lora_apply_dir, 'loaded') - - -# Scales to half -print('Fitting 4bit scales and zeros to half') -for n, m in model.named_modules(): - if '4bit' in str(type(m)): - if m.groupsize == -1: - m.zeros = m.zeros.half() - m.scales = m.scales.half() - -# Set tokenizer -tokenizer.pad_token_id = 0 - -if not ft_config.skip: - # Load Data - data = None - if ft_config.ds_type == "txt" and not ft_config.skip: - #### LLaMa - data = train_data.TrainTxt(ft_config.dataset, ft_config.val_set_size, tokenizer, ft_config.cutoff_len) - elif ft_config.ds_type == "alpaca" and not ft_config.skip: - #### Stanford Alpaca-like Data - data = train_data.TrainSAD(ft_config.dataset, ft_config.val_set_size, tokenizer, ft_config.cutoff_len) - elif ft_config.ds_type == "gpt4all" and not ft_config.skip: - #### GPT4All Data - data = train_data.TrainGPT4All(ft_config.dataset, ft_config.val_set_size, tokenizer, ft_config.cutoff_len) - else: - raise NotImplementedError("ERROR: Unknown dataset format") - data.prepare_data(thd=ft_config.txt_row_thd, use_eos_token=ft_config.use_eos_token) - #### - - # Use gradient checkpointing - if ft_config.gradient_checkpointing: - print('Applying gradient checkpointing ...') - from gradient_checkpointing import apply_gradient_checkpointing - apply_gradient_checkpointing(model, checkpoint_ratio=ft_config.gradient_checkpointing_ratio) - - # Disable Trainer's DataParallel for multigpu - if not ft_config.ddp and torch.cuda.device_count() > 1: - model.is_parallelizable = True - model.model_parallel = True - - training_arguments = transformers.TrainingArguments( - per_device_train_batch_size=ft_config.mbatch_size, - gradient_accumulation_steps=ft_config.gradient_accumulation_steps, - warmup_steps=ft_config.warmup_steps, - optim="adamw_torch", - num_train_epochs=ft_config.epochs, - learning_rate=ft_config.lr, - fp16=True, - logging_steps=ft_config.logging_steps, - evaluation_strategy="no", - save_strategy="steps", - eval_steps=None, - save_steps=ft_config.save_steps, - output_dir=ft_config.lora_out_dir, - save_total_limit=ft_config.save_total_limit, - load_best_model_at_end=False, - ddp_find_unused_parameters=False if ft_config.ddp else None, - ) - - trainer = transformers.Trainer( - model=model, - train_dataset=data.train_data, - eval_dataset=data.val_data, - args=training_arguments, - data_collator=transformers.DataCollatorForLanguageModeling(tokenizer, mlm=False), - ) - model.config.use_cache = False - - # Set Model dict - old_state_dict = model.state_dict - model.state_dict = ( - lambda self, *_, **__: get_peft_model_state_dict(self, old_state_dict()) - ).__get__(model, type(model)) - - # Set Verbose - if ft_config.verbose: - transformers.logging.set_verbosity_info() - - # Run Trainer - if ft_config.resume_checkpoint: - print('Resuming from {} ...'.format(ft_config.resume_checkpoint)) - trainer.train(ft_config.resume_checkpoint) - else: - trainer.train() - - print('Train completed.') - -# Save Model -model.save_pretrained(ft_config.lora_out_dir) - -if ft_config.checkpoint: - print("Warning: Merge model + LoRA and save the whole checkpoint not implemented yet.") - -print('Model Saved.') diff --git a/gradient_checkpointing.py b/gradient_checkpointing.py deleted file mode 100644 index b75fd2c..0000000 --- a/gradient_checkpointing.py +++ /dev/null @@ -1,61 +0,0 @@ -from transformers.models.llama.modeling_llama import LlamaDecoderLayer -from torch.utils.checkpoint import checkpoint -from torch.autograd import Variable -import torch -from torch import nn -import numpy as np - - -class NewForward: - - def __init__(self, layer): - self.layer = layer - self.apply_patch() - - def apply_patch(self): - self.layer.old_forward_for_cp = self.layer.forward - self.layer.forward = self.new_forward - - def new_forward(self, *args, **kwargs): - def func(*args): - return self.layer.old_forward_for_cp(*args, **kwargs) - output = checkpoint(func, *args) - return output - - -class VarWrapper: - - def __init__(self, model): - self.model = model - self.apply_patch() - print('Var Wrapper Patch Applied') - - def apply_patch(self): - self.model.old_forward_for_cp = self.model.forward - self.model.forward = self.new_forward - - def new_forward(self, *args, **kwargs): - out = self.model.old_forward_for_cp(*args, **kwargs) - out = Variable(out.data, requires_grad=True) - return out - - -def apply_gradient_checkpointing(model, checkpoint_ratio=1): - new_forwards = [] - modules = [] - for n, m in model.named_modules(): - if isinstance(m, LlamaDecoderLayer): - modules.append(m) - if checkpoint_ratio < 1 and checkpoint_ratio > 0: - checkpoint_locs = np.array((np.linspace(0, 1, int(len(modules) * checkpoint_ratio)) * (len(modules)-1)).round(), dtype=int) - else: - checkpoint_locs = np.arange(len(modules)) - for i in checkpoint_locs: - m = modules[i] - new_forwards.append(NewForward(m)) - print('Forward Patch Applied For Block {}'.format(i)) - for n, m in model.named_modules(): - if isinstance(m, torch.nn.Embedding): - wrapper = VarWrapper(m) - break - return new_forwards, wrapper diff --git a/inference.py b/inference.py deleted file mode 100644 index c0f4599..0000000 --- a/inference.py +++ /dev/null @@ -1,44 +0,0 @@ -import os -import sys -import time -import torch -from autograd_4bit import load_llama_model_4bit_low_ram, Autograd4bitQuantLinear -config_path = './llama-13b-4bit/' -model_path = './llama-13b-4bit.pt' -model, tokenizer = load_llama_model_4bit_low_ram(config_path, model_path, groupsize=-1) - -print('Fitting 4bit scales and zeros to half') -model.half() -for n, m in model.named_modules(): - if isinstance(m, Autograd4bitQuantLinear): - if m.groupsize == -1: - m.zeros = m.zeros.half() - m.scales = m.scales.half() - m.bias = m.bias.half() - -print('Apply AMP Wrapper ...') -from amp_wrapper import AMPWrapper -wrapper = AMPWrapper(model) -wrapper.apply_generate() - -prompt = '''I think the meaning of life is''' -batch = tokenizer(prompt, return_tensors="pt", add_special_tokens=False) -batch = {k: v.cuda() for k, v in batch.items()} - -start = time.time() -with torch.no_grad(): - generated = model.generate(inputs=batch["input_ids"], - do_sample=True, use_cache=True, - repetition_penalty=1.1, - max_new_tokens=20, - temperature=0.9, - top_p=0.95, - top_k=40, - return_dict_in_generate=True, - output_attentions=False, - output_hidden_states=False, - output_scores=False) -result_text = tokenizer.decode(generated['sequences'].cpu().tolist()[0]) -end = time.time() -print(result_text) -print(end - start) diff --git a/matmul_utils_4bit.py b/matmul_utils_4bit.py deleted file mode 100644 index 2aaa0ad..0000000 --- a/matmul_utils_4bit.py +++ /dev/null @@ -1,143 +0,0 @@ -import torch -import numpy as np -from gptq_llama import quant_cuda - - -# Global Buffer -buffer_mat_dic = {} -use_new = True -auto_switch = True -auto_switch_thd = 8 -debug = False - - -def get_buffer(shape_of_qweight, dtype=torch.float16, device='cuda'): - if shape_of_qweight not in buffer_mat_dic.keys(): - buffer_mat_dic[shape_of_qweight] = torch.zeros((shape_of_qweight[0] * 8, shape_of_qweight[1]), dtype=dtype, device=device) - else: - if buffer_mat_dic[shape_of_qweight].device != device: - buffer_mat_dic[shape_of_qweight] = buffer_mat_dic[shape_of_qweight].to(device) - if buffer_mat_dic[shape_of_qweight].dtype != dtype: - buffer_mat_dic[shape_of_qweight] = buffer_mat_dic[shape_of_qweight].to(dtype=dtype) - return buffer_mat_dic[shape_of_qweight] - - -def _matmul4bit_v1(x, qweight, scales, zeros): - """ - input x: (n, m) - qweight: (j, k) - where m == j*8 - - perform x @ qweight - - return y: - """ - if debug: - print('_matmul4bit_v1') - assert qweight.shape[0] * 8 == x.shape[-1] - outshape = x.shape[:-1] + (qweight.shape[1],) - x = x.reshape(-1, x.shape[-1]) - y = torch.zeros((x.shape[0], qweight.shape[-1]), dtype=torch.float32, device=x.device) - dtype = x.dtype - x = x.half() - quant_cuda.vecquant4matmul_v1_faster(x, qweight, y, scales, zeros) - y = y.to(dtype) - return y.reshape(outshape) - - -def _matmul4bit_v2(x, qweight, scales, zeros, g_idx): - """ - input x: (n, m) - qweight: (j, k) - where m == j*8 - - perform x @ qweight - - return y: - """ - if debug: - print('_matmul4bit_v2') - assert qweight.shape[0] * 8 == x.shape[-1] - outshape = x.shape[:-1] + (qweight.shape[1],) - x = x.reshape(-1, x.shape[-1]) - y = torch.zeros((x.shape[0], qweight.shape[-1]), dtype=torch.float32, device=x.device) - dtype = x.dtype - x = x.half() - quant_cuda.vecquant4matmul_faster(x, qweight, y, scales, zeros, g_idx, x.shape[-1] // 2) - y = y.to(dtype) - return y.reshape(outshape) - - -def _matmul4bit_v1_recons(x, qweight, scales, zeros, transpose=False): - if debug: - print('_matmul4bit_v1_recons') - if not transpose: - assert qweight.shape[0] * 8 == x.shape[-1] - else: - assert qweight.shape[1] == x.shape[-1] - buffer = get_buffer(qweight.shape, dtype=scales.dtype, device=qweight.device) - quant_cuda.vecquant4recons_v1(qweight, buffer, scales, zeros) - if not transpose: - output = torch.matmul(x, buffer) - else: - output = torch.matmul(x, buffer.T) - return output - - -def _matmul4bit_v2_recons(x, qweight, scales, zeros, g_idx, transpose=False): - if debug: - print('_matmul4bit_v2_recons') - if not transpose: - assert qweight.shape[0] * 8 == x.shape[-1] - else: - assert qweight.shape[1] == x.shape[-1] - buffer = get_buffer(qweight.shape, dtype=scales.dtype, device=qweight.device) - quant_cuda.vecquant4recons_v2(qweight, buffer, scales, zeros, g_idx) - if not transpose: - output = torch.matmul(x, buffer) - else: - output = torch.matmul(x, buffer.T) - return output - - -def matmul4bit(x, qweight, scales, zeros, g_idx=None): - # detect if zeros is int32 - if zeros.dtype != torch.int32: - # use v1 - if use_new: - if auto_switch: - if np.prod(x.shape[:-1]) > auto_switch_thd: - output = _matmul4bit_v1_recons(x.to(scales.dtype), qweight, scales, zeros) - else: - output = _matmul4bit_v1(x, qweight, scales.float(), zeros.float()) - else: - output = _matmul4bit_v1(x, qweight, scales.float(), zeros.float()) - else: - if g_idx is None: - g_idx = torch.zeros(qweight.shape[0] * 8, dtype=torch.int32, device=x.device) - # use v2 - if use_new: - if auto_switch: - if np.prod(x.shape[:-1]) > auto_switch_thd: - output = _matmul4bit_v2_recons(x.to(scales.dtype), qweight, scales, zeros, g_idx) - else: - output = _matmul4bit_v2(x, qweight, scales.float(), zeros, g_idx) - else: - output = _matmul4bit_v2(x, qweight, scales.float(), zeros, g_idx) - return output - - -def v2_to_v1(scales, zeros): - """ - Convert zeros in V2 model to V1 model when group_num = 1, for debugging - depreciated - """ - assert zeros.shape[0] == 1 - z_mat = torch.zeros((zeros.shape[1], 256), dtype=torch.int, device=zeros.device) + zeros.reshape((-1,1)) - z_buffer = torch.zeros((z_mat.shape[0] * 8, z_mat.shape[1]), dtype=torch.float16, device=zeros.device) - z_zeros = torch.zeros(z_mat.shape[1], dtype=torch.float16, device=zeros.device) - z_scales = torch.ones(z_mat.shape[1], dtype=torch.float16, device=zeros.device) - quant_cuda.vecquant4recons_v1(z_mat, z_buffer, z_scales, z_zeros) - z_buffer = z_buffer[:,0] - zeros_recons = z_buffer * scales + scales - return zeros_recons diff --git a/mjc_notes.md b/mjc_notes.md new file mode 100644 index 0000000..7e89987 --- /dev/null +++ b/mjc_notes.md @@ -0,0 +1,57 @@ + +My personal repo to convert models from Lora to huggingface/ggml/gptq 4bit so I can run them in normal text-webui and llama.cpp + +How do we do this? + +1. lora -> hf + - [tloen/alpaca-lora/export_hf_checkpoint.py](https://github.com/tloen/alpaca-lora/blob/main/export_hf_checkpoint.py) +2. hf -> 4bit + - using [GPTQ-for-LLaMa/llama.py](https://github.com/qwopqwop200/GPTQ-for-LLaMa/blob/triton/llama.py) + `CUDA_VISIBLE_DEVICES=0 python llama.py ./llama-hf/llama-7b c4 --wbits 4 --true-sequential --act-order --groupsize 128 --save llama7b-4bit-128g.pt` +3) and to ggml + - [llama.cpp/convert-pth-to-ggml.py](https://github.com/ggerganov/llama.cpp/blob/master/convert-pth-to-ggml.py) + + +# TODO + +- [ ] lora -> hf +- [ ] hf -> 4bit +- [ ] hf -> ggml + +# setup env + +```sh + +conda create -n textgen3 python=3.10.9 +conda activate textgen3 +mamba install pytorch torchvision torchaudio pytorch-cuda=11.7 cudatoolkit-dev==11.7 cudatoolkit=11.7 -c pytorch -c nvidia -c conda-forge +``` + +# download models + +```sh +# # base models.... FIXME +# wget https://huggingface.co/maderix/llama-65b-4bit/resolve/main/llama30b-4bit.pt ../llama-30b-4bit.pt +# wget https://huggingface.co/maderix/llama-65b-4bit/resolve/main/llama13b-4bit.pt ../llama-13b-4bit.pt +# wget https://huggingface.co/maderix/llama-65b-4bit/resolve/main/llama7b-4bit.pt ../llama-7b-4bit.pt +# cools models: +# - https://huggingface.co/jordiclive/gpt4all-alpaca-oa-codealpaca-lora-13b +# - https://huggingface.co/Black-Engineer/oasst-llama30b-ggml-q4 +# - https://huggingface.co/chansung/alpaca-lora-30b + +# download loras +python scripts/download-model.py chansung/alpaca-lora-30b +python scripts/download-model.py chansung/alpaca-lora-13b +python scripts/download-model.py tloen/alpaca-lora-7b +``` + +# convert models + +```sh +python scripts/export_hf_checkpoint.py ./models/llama-7b-hf -l loras/tloen_alpaca-lora-7b +``` + + +# Links + +- https://github.com/s4rduk4r/alpaca_lora_4bit_readme/blob/main/README.md diff --git a/monkeypatch/llama_flash_attn_monkey_patch.py b/monkeypatch/llama_flash_attn_monkey_patch.py deleted file mode 100644 index 0c80227..0000000 --- a/monkeypatch/llama_flash_attn_monkey_patch.py +++ /dev/null @@ -1,144 +0,0 @@ -from typing import List, Optional, Tuple - -import torch -from torch import nn - -import transformers -from transformers.models.llama.modeling_llama import LlamaConfig, LlamaRotaryEmbedding, apply_rotary_pos_emb - -from einops import rearrange - -from flash_attn.flash_attn_interface import flash_attn_unpadded_qkvpacked_func -from flash_attn.bert_padding import unpad_input, pad_input - -class LlamaAttention(nn.Module): - """Multi-headed attention from 'Attention Is All You Need' paper""" - - def __init__( - self, - config: LlamaConfig, - ): - super().__init__() - hidden_size = config.hidden_size - num_heads = config.num_attention_heads - self.hidden_size = hidden_size - self.num_heads = num_heads - self.head_dim = self.hidden_size // num_heads - - if (self.head_dim * num_heads) != self.hidden_size: - raise ValueError( - f"hidden_size must be divisible by num_heads (got `hidden_size`: {self.hidden_size}" - f" and `num_heads`: {num_heads}).") - self.q_proj = nn.Linear( - hidden_size, - num_heads * self.head_dim, - bias=False, - ) - self.k_proj = nn.Linear( - hidden_size, - num_heads * self.head_dim, - bias=False, - ) - self.v_proj = nn.Linear( - hidden_size, - num_heads * self.head_dim, - bias=False, - ) - self.o_proj = nn.Linear( - num_heads * self.head_dim, - hidden_size, - bias=False, - ) - self.rotary_emb = LlamaRotaryEmbedding(self.head_dim) - - def _shape(self, tensor: torch.Tensor, seq_len: int, bsz: int): - return tensor.view(bsz, seq_len, self.num_heads, - self.head_dim).transpose(1, 2).contiguous() - - def forward( - self, - hidden_states: torch.Tensor, - past_key_value: Optional[Tuple[torch.Tensor]] = None, - attention_mask: Optional[torch.Tensor] = None, - position_ids: Optional[torch.LongTensor] = None, - output_attentions: bool = False, - use_cache: bool = False, - ) -> Tuple[torch.Tensor, Optional[torch.Tensor], - Optional[Tuple[torch.Tensor]]]: - """Input shape: Batch x Time x Channel - - attention_mask: [bsz, q_len] - """ - bsz, q_len, _ = hidden_states.size() - - query_states = self.q_proj(hidden_states).view( - bsz, q_len, self.num_heads, self.head_dim).transpose(1, 2) - key_states = self.k_proj(hidden_states).view( - bsz, q_len, self.num_heads, self.head_dim).transpose(1, 2) - value_states = self.v_proj(hidden_states).view( - bsz, q_len, self.num_heads, self.head_dim).transpose(1, 2) - # [bsz, q_len, nh, hd] - # [bsz, nh, q_len, hd] - - kv_seq_len = key_states.shape[-2] - if past_key_value is not None: - kv_seq_len += past_key_value[0].shape[-2] - - cos, sin = self.rotary_emb(value_states, seq_len=kv_seq_len) - query_states, key_states = apply_rotary_pos_emb(query_states, - key_states, - cos, - sin, - position_ids) - # [bsz, nh, t, hd] - assert not output_attentions, "output_attentions is not supported" - assert not use_cache, "use_cache is not supported" - assert past_key_value is None, "past_key_value is not supported" - - # Flash attention codes from - # https://github.com/HazyResearch/flash-attention/blob/main/flash_attn/flash_attention.py - - # transform the data into the format required by flash attention - qkv = torch.stack([query_states, key_states, value_states], dim=2) # [bsz, nh, 3, q_len, hd] - qkv = qkv.transpose(1, 3) # [bsz, q_len, 3, nh, hd] - # We have disabled _prepare_decoder_attention_mask in LlamaModel - # the attention_mask should be the same as the key_padding_mask - key_padding_mask = attention_mask - - - if key_padding_mask is None: - qkv = rearrange(qkv, 'b s ... -> (b s) ...') - max_s = q_len - cu_q_lens = torch.arange(0, (bsz + 1) * q_len, step=q_len, dtype=torch.int32, - device=qkv.device) - output = flash_attn_unpadded_qkvpacked_func( - qkv, cu_q_lens, max_s, 0.0, - softmax_scale=None, causal=True - ) - output = rearrange(output, '(b s) ... -> b s ...', b=bsz) - else: - nheads = qkv.shape[-2] - x = rearrange(qkv, 'b s three h d -> b s (three h d)') - x_unpad, indices, cu_q_lens, max_s = unpad_input(x, key_padding_mask) - x_unpad = rearrange(x_unpad, 'nnz (three h d) -> nnz three h d', three=3, h=nheads) - output_unpad = flash_attn_unpadded_qkvpacked_func( - x_unpad, cu_q_lens, max_s, 0.0, - softmax_scale=None, causal=True - ) - output = rearrange(pad_input(rearrange(output_unpad, 'nnz h d -> nnz (h d)'), - indices, bsz, q_len), - 'b s (h d) -> b s h d', h=nheads) - return self.o_proj(rearrange(output, - 'b s h d -> b s (h d)')), None, None - - -# Copied from transformers.models.bart.modeling_bart.BartDecoder._prepare_decoder_attention_mask -def _prepare_decoder_attention_mask(self, attention_mask, input_shape, - inputs_embeds, past_key_values_length): - # [bsz, seq_len] - return attention_mask - - -def replace_llama_attn_with_flash_attn(): - transformers.models.llama.modeling_llama.LlamaModel._prepare_decoder_attention_mask = _prepare_decoder_attention_mask - transformers.models.llama.modeling_llama.LlamaAttention = LlamaAttention diff --git a/requirements.txt b/requirements.txt index 9832253..954b232 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,12 +1,13 @@ -torch +# torch accelerate bitsandbytes datasets sentencepiece safetensors -flash-attn +# flash-attn triton colorama -git+https://github.com/huggingface/transformers.git +git+https://github.com/huggingface/transformers.git@656e869 git+https://github.com/sterlind/GPTQ-for-LLaMa.git@lora_4bit -git+https://github.com/sterlind/peft.git +# git+https://github.com/sterlind/peft.git@085c09d +git+https://github.com/wassname/peft.git diff --git a/scripts/clone-model.py b/scripts/clone-model.py new file mode 100644 index 0000000..8980490 --- /dev/null +++ b/scripts/clone-model.py @@ -0,0 +1,37 @@ +''' +clones models from Hugging Face to models/model-name. + +Example: +python clone-model.py facebook/opt-1.3b + +''' + +from git import Repo +import argparse +from tqdm.auto import tqdm +from git import RemoteProgress + + +parser = argparse.ArgumentParser() +parser.add_argument('MODEL', type=str, default=None, help="`tloen/alpaca-lora-7b`") +parser.add_argument('--branch', type=str, default='main', help='Name of the Git branch to download from.') +args = parser.parse_args() + +class CloneProgress(RemoteProgress): + """tqdm progress bar for GitPython""" + def __init__(self): + super().__init__() + self.pbar = tqdm() + + def update(self, op_code, cur_count, max_count=None, message=''): + self.pbar.total = max_count + self.pbar.n = cur_count + self.pbar.refresh() + +if __name__ == '__main__': + model = args.MODEL + repo = 'https://huggingface.co/' + model + name = model.replace('/', '_') + dest = f'./models/{name}' + print(f'cloning "{repo}" to "{dest}"') + Repo.clone_from(repo, dest, progress=CloneProgress()) diff --git a/scripts/download-model.py b/scripts/download-model.py new file mode 100644 index 0000000..b2992d7 --- /dev/null +++ b/scripts/download-model.py @@ -0,0 +1,275 @@ +''' +Downloads models from Hugging Face to models/model-name. + +Example: +python download-model.py facebook/opt-1.3b + +From https://raw.githubusercontent.com/oobabooga/text-generation-webui/main/download-model.py + +''' + +import argparse +import base64 +import datetime +import hashlib +import json +import re +import sys +from pathlib import Path + +import requests +import tqdm +from tqdm.contrib.concurrent import thread_map + + +parser = argparse.ArgumentParser() +parser.add_argument('MODEL', type=str, default=None, nargs='?') +parser.add_argument('--branch', type=str, default='main', help='Name of the Git branch to download from.') +parser.add_argument('--threads', type=int, default=1, help='Number of files to download simultaneously.') +parser.add_argument('--text-only', action='store_true', help='Only download text files (txt/json).') +parser.add_argument('--output', type=str, default=None, help='The folder where the model should be saved.') +parser.add_argument('--clean', action='store_true', help='Does not resume the previous download.') +parser.add_argument('--check', action='store_true', help='Validates the checksums of model files.') +args = parser.parse_args() + + +def select_model_from_default_options(): + models = { + "OPT 6.7B": ("facebook", "opt-6.7b", "main"), + "OPT 2.7B": ("facebook", "opt-2.7b", "main"), + "OPT 1.3B": ("facebook", "opt-1.3b", "main"), + "OPT 350M": ("facebook", "opt-350m", "main"), + "GALACTICA 6.7B": ("facebook", "galactica-6.7b", "main"), + "GALACTICA 1.3B": ("facebook", "galactica-1.3b", "main"), + "GALACTICA 125M": ("facebook", "galactica-125m", "main"), + "Pythia-6.9B-deduped": ("EleutherAI", "pythia-6.9b-deduped", "main"), + "Pythia-2.8B-deduped": ("EleutherAI", "pythia-2.8b-deduped", "main"), + "Pythia-1.4B-deduped": ("EleutherAI", "pythia-1.4b-deduped", "main"), + "Pythia-410M-deduped": ("EleutherAI", "pythia-410m-deduped", "main"), + } + choices = {} + + print("Select the model that you want to download:\n") + for i, name in enumerate(models): + char = chr(ord('A') + i) + choices[char] = name + print(f"{char}) {name}") + char = chr(ord('A') + len(models)) + print(f"{char}) None of the above") + + print() + print("Input> ", end='') + choice = input()[0].strip().upper() + if choice == char: + print("""\nThen type the name of your desired Hugging Face model in the format organization/name. + +Examples: +facebook/opt-1.3b +EleutherAI/pythia-1.4b-deduped +""") + + print("Input> ", end='') + model = input() + branch = "main" + else: + arr = models[choices[choice]] + model = f"{arr[0]}/{arr[1]}" + branch = arr[2] + + return model, branch + + +def sanitize_model_and_branch_names(model, branch): + if model[-1] == '/': + model = model[:-1] + if branch is None: + branch = "main" + else: + pattern = re.compile(r"^[a-zA-Z0-9._-]+$") + if not pattern.match(branch): + raise ValueError("Invalid branch name. Only alphanumeric characters, period, underscore and dash are allowed.") + + return model, branch + + +def get_download_links_from_huggingface(model, branch, text_only=False): + base = "https://huggingface.co" + page = f"/api/models/{model}/tree/{branch}?cursor=" + cursor = b"" + + links = [] + sha256 = [] + classifications = [] + has_pytorch = False + has_pt = False + has_ggml = False + has_safetensors = False + is_lora = False + while True: + content = requests.get(f"{base}{page}{cursor.decode()}").content + + dict = json.loads(content) + if len(dict) == 0: + break + + for i in range(len(dict)): + if 'error' in dict: + print("you might need to run `huggingface-cli login`") + raise Exception(dict['error']) + fname = dict[i]['path'] + if not is_lora and fname.endswith(('adapter_config.json', 'adapter_model.bin')): + is_lora = True + + is_pytorch = re.match("(pytorch|adapter)_model.*\.bin", fname) + is_safetensors = re.match(".*\.safetensors", fname) + is_pt = re.match(".*\.pt", fname) + is_ggml = re.match("ggml.*\.bin", fname) + is_tokenizer = re.match("tokenizer.*\.model", fname) + is_text = re.match(".*\.(txt|json|py|md)", fname) or is_tokenizer + + if any((is_pytorch, is_safetensors, is_pt, is_ggml, is_tokenizer, is_text)): + if 'lfs' in dict[i]: + sha256.append([fname, dict[i]['lfs']['oid']]) + if is_text: + links.append(f"https://huggingface.co/{model}/resolve/{branch}/{fname}") + classifications.append('text') + continue + if not text_only: + links.append(f"https://huggingface.co/{model}/resolve/{branch}/{fname}") + if is_safetensors: + has_safetensors = True + classifications.append('safetensors') + elif is_pytorch: + has_pytorch = True + classifications.append('pytorch') + elif is_pt: + has_pt = True + classifications.append('pt') + elif is_ggml: + has_ggml = True + classifications.append('ggml') + + cursor = base64.b64encode(f'{{"file_name":"{dict[-1]["path"]}"}}'.encode()) + b':50' + cursor = base64.b64encode(cursor) + cursor = cursor.replace(b'=', b'%3D') + + # If both pytorch and safetensors are available, download safetensors only + if (has_pytorch or has_pt) and has_safetensors: + for i in range(len(classifications) - 1, -1, -1): + if classifications[i] in ['pytorch', 'pt']: + links.pop(i) + + return links, sha256, is_lora + + +def get_output_folder(model, branch, is_lora, base_folder=None): + if base_folder is None: + base_folder = 'models' if not is_lora else 'loras' + + output_folder = f"{'_'.join(model.split('/')[-2:])}" + if branch != 'main': + output_folder += f'_{branch}' + output_folder = Path(base_folder) / output_folder + return output_folder + + +def get_single_file(url, output_folder, start_from_scratch=False): + filename = Path(url.rsplit('/', 1)[1]) + output_path = output_folder / filename + if output_path.exists() and not start_from_scratch: + # Check if the file has already been downloaded completely + r = requests.get(url, stream=True) + total_size = int(r.headers.get('content-length', 0)) + if output_path.stat().st_size >= total_size: + return + # Otherwise, resume the download from where it left off + headers = {'Range': f'bytes={output_path.stat().st_size}-'} + mode = 'ab' + else: + headers = {} + mode = 'wb' + + r = requests.get(url, stream=True, headers=headers) + with open(output_path, mode) as f: + total_size = int(r.headers.get('content-length', 0)) + block_size = 1024 + with tqdm.tqdm(total=total_size, unit='iB', unit_scale=True, bar_format='{l_bar}{bar}| {n_fmt:6}/{total_fmt:6} {rate_fmt:6}') as t: + for data in r.iter_content(block_size): + t.update(len(data)) + f.write(data) + + +def start_download_threads(file_list, output_folder, start_from_scratch=False, threads=1): + thread_map(lambda url: get_single_file(url, output_folder, start_from_scratch=start_from_scratch), file_list, max_workers=threads, disable=True) + + +def download_model_files(model, branch, links, sha256, output_folder, start_from_scratch=False, threads=1): + # Creating the folder and writing the metadata + if not output_folder.exists(): + output_folder.mkdir() + with open(output_folder / 'huggingface-metadata.txt', 'w') as f: + f.write(f'url: https://huggingface.co/{model}\n') + f.write(f'branch: {branch}\n') + f.write(f'download date: {str(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))}\n') + sha256_str = '' + for i in range(len(sha256)): + sha256_str += f' {sha256[i][1]} {sha256[i][0]}\n' + if sha256_str != '': + f.write(f'sha256sum:\n{sha256_str}') + + # Downloading the files + print(f"Downloading the model to {output_folder}") + start_download_threads(links, output_folder, start_from_scratch=start_from_scratch, threads=threads) + + +def check_model_files(model, branch, links, sha256, output_folder): + # Validate the checksums + validated = True + for i in range(len(sha256)): + fpath = (output_folder / sha256[i][0]) + + if not fpath.exists(): + print(f"The following file is missing: {fpath}") + validated = False + continue + + with open(output_folder / sha256[i][0], "rb") as f: + bytes = f.read() + file_hash = hashlib.sha256(bytes).hexdigest() + if file_hash != sha256[i][1]: + print(f'Checksum failed: {sha256[i][0]} {sha256[i][1]}') + validated = False + else: + print(f'Checksum validated: {sha256[i][0]} {sha256[i][1]}') + + if validated: + print('[+] Validated checksums of all model files!') + else: + print('[-] Invalid checksums. Rerun download-model.py with the --clean flag.') + + +if __name__ == '__main__': + branch = args.branch + model = args.MODEL + if model is None: + model, branch = select_model_from_default_options() + + # Cleaning up the model/branch names + try: + model, branch = sanitize_model_and_branch_names(model, branch) + except ValueError as err_branch: + print(f"Error: {err_branch}") + sys.exit() + + # Getting the download links from Hugging Face + links, sha256, is_lora = get_download_links_from_huggingface(model, branch, text_only=args.text_only) + + # Getting the output folder + output_folder = get_output_folder(model, branch, is_lora, base_folder=args.output) + + if args.check: + # Check previously downloaded files + check_model_files(model, branch, links, sha256, output_folder) + else: + # Download files + download_model_files(model, branch, links, sha256, output_folder, threads=args.threads) diff --git a/scripts/export_hf_checkpoint.py b/scripts/export_hf_checkpoint.py new file mode 100644 index 0000000..6f8de11 --- /dev/null +++ b/scripts/export_hf_checkpoint.py @@ -0,0 +1,81 @@ +""" +From https://raw.githubusercontent.com/tloen/alpaca-lora/main/export_hf_checkpoint.py +""" +import os +from pathlib import Path +import argparse +import torch +import transformers +from peft import PeftModel +from transformers import LlamaForCausalLM, LlamaTokenizer # noqa: F402 + +def main(BASE_MODEL, LORA_MODEL, output_path=None): + + if output_path is None: + output_path = 'models/' + LORA_MODEL.split('/')[-1] + '-delorified' + + # BASE_MODEL = os.environ.get("BASE_MODEL", None) + # assert ( + # BASE_MODEL + # ), "Please specify a value for BASE_MODEL environment variable, e.g. `export BASE_MODEL=huggyllama/llama-7b`" # noqa: E501 + + + # LORA_MODEL = os.environ.get("BASE_MODEL", None) + # assert ( + # LORA_MODEL + # ), "Please specify a value for LORA_MODEL environment variable, e.g. `export BASE_MODEL=tloen/alpaca-lora-7b`" # noqa: E501 + + tokenizer = LlamaTokenizer.from_pretrained(BASE_MODEL) + + base_model = LlamaForCausalLM.from_pretrained( + BASE_MODEL, + load_in_8bit=False, + torch_dtype=torch.float16, + device_map={"": "cpu"}, + ) + + first_weight = base_model.model.layers[0].self_attn.q_proj.weight + first_weight_old = first_weight.clone() + + lora_model = PeftModel.from_pretrained( + base_model, + LORA_MODEL, + device_map={"": "cpu"}, + torch_dtype=torch.float16, + ) + + lora_weight = lora_model.base_model.model.model.layers[ + 0 + ].self_attn.q_proj.weight + + assert torch.allclose(first_weight_old, first_weight) + + # merge weights - new merging method from peft + lora_model = lora_model.merge_and_unload() + + lora_model.train(False) + + # did we do anything? + assert not torch.allclose(first_weight_old, first_weight) + + lora_model_sd = lora_model.state_dict() + deloreanized_sd = { + k.replace("base_model.model.", ""): v + for k, v in lora_model_sd.items() + if "lora" not in k + } + + LlamaForCausalLM.save_pretrained( + base_model, output_path, state_dict=deloreanized_sd, max_shard_size="400MB" + ) + print(f'output {output_path}') + +if __name__=="__main__": + parser = argparse.ArgumentParser() + parser.add_argument('model', type=str) + parser.add_argument('-l', '--lora', type=str, default='main', help='Lora repo or path e.g. `tloen/alpaca-lora-7b`') + parser.add_argument('-o', '--output', type=Path, default=None) + "e.g. ./hf_ckpt. default will be lora name" + args = parser.parse_args() + main(args.model, args.lora, args.output) + diff --git a/train_data.py b/train_data.py deleted file mode 100644 index 3e3817e..0000000 --- a/train_data.py +++ /dev/null @@ -1,273 +0,0 @@ -import torch - -from abc import ABC, abstractmethod -from typing import Dict, Any -from datasets import load_dataset, Dataset -from torch.utils.data import DataLoader -from transformers import DefaultDataCollator -import os - - -# Abstract train data loader -class ATrainData(ABC): - """ - """ - @abstractmethod - def __init__(self, dataset: str, val_set_size: int, tokenizer, cutoff_len: int) -> None: - """ - Args: - dataset (str): Path to dataset - val_set_size (int) : Size of validation set - tokenizer (_type_): Tokenizer - """ - self.tokenizer = tokenizer - self.dataset = dataset - self.val_set_size = val_set_size - self.cutoff_len = cutoff_len - self.train_data = None - self.val_data = None - - @abstractmethod - def tokenize(self, prompt: str) -> Dict[str, Any]: - """Tokenization method - - Args: - prompt (str): Prompt string from dataset - - Returns: - Dict[str, Any]: token - """ - pass - - @abstractmethod - def prepare_data(self) -> None: - """Loads dataset from file and prepares train_data property for trainer - """ - pass - - -# LLaMA txt train data loader -class TrainTxt(ATrainData): - def __init__(self, dataset: str, val_set_size: int, tokenizer, cutoff_len): - super().__init__(dataset, val_set_size, tokenizer, cutoff_len) # TODO: Validation size isn't used - self.cutoff_len = cutoff_len - self.exceed_count = 0 - - def tokenize(self, prompt: str, use_eos_token=True, **kwargs) -> Dict[str, Any]: - # there's probably a way to do this with the tokenizer settings - # but again, gotta move fast - if use_eos_token: - result = self.tokenizer( - prompt + self.tokenizer.eos_token, - truncation=True, - max_length=self.cutoff_len, - padding=False, - ) - d = { - "input_ids": result["input_ids"], - "attention_mask": result["attention_mask"], - } - if ( - d["input_ids"][-1] != self.tokenizer.eos_token_id - and len(d["input_ids"]) < self.cutoff_len - ): - d["input_ids"].append(self.tokenizer.eos_token_id) - d["attention_mask"].append(1) - else: - result = self.tokenizer( - prompt, - truncation=True, - max_length=self.cutoff_len + 1, - padding="max_length", - ) - d = { - "input_ids": result["input_ids"][:-1], - "attention_mask": result["attention_mask"][:-1], - } - if sum(d['attention_mask']) >= self.cutoff_len: - self.exceed_count += 1 - return d - - @classmethod - def format_new_rows(cls, rows, thd=128): - r_b = '' - new_rows = [] - for row in rows: - if len(r_b) == 0: - r_b += row - else: - r_b += '\n' + row - if len(r_b) > thd: - new_rows.append(r_b) - r_b = '' - if len(r_b) > thd: - new_rows.append(r_b) - r_b = '' - return new_rows - - def prepare_data(self, thd=-1, use_eos_token=True, **kwargs): - if os.path.isdir(self.dataset): - rows = [] - for filename in os.listdir(self.dataset): - with open(self.dataset + filename, 'r', encoding='utf8') as file: - txt = file.read() - txt = txt.replace('\r\n', '\n').replace('\u3000', ' ') - rows += [r for r in txt.split('\n') if r != ''] - else: - with open(self.dataset, 'r', encoding='utf8') as file: - txt = file.read() - txt = txt.replace('\r\n', '\n') - rows = [r for r in txt.split('\n') if r != ''] - if thd != -1: - rows = self.format_new_rows(rows, thd=thd) - data = Dataset.from_dict({"input": rows}) - data = data.shuffle().map(lambda x: self.tokenize(x["input"], use_eos_token=use_eos_token)) - print('Train Data: {:.2f}%'.format(self.exceed_count / len(data) * 100), 'outliers') - self.train_data = data - - -# Stanford Alpaca-like Data -class TrainSAD(ATrainData): - def __init__(self, dataset: str, val_set_size: int, tokenizer, cutoff_len) -> None: - super().__init__(dataset, val_set_size, tokenizer, cutoff_len) - - def tokenize(self, prompt: str, use_eos_token=True, **kwargs) -> Dict[str, Any]: - # there's probably a way to do this with the tokenizer settings - # but again, gotta move fast - if use_eos_token: - result = self.tokenizer( - prompt + self.tokenizer.eos_token, - truncation=True, - max_length=self.cutoff_len, - padding=False, - ) - if ( - result["input_ids"][-1] != self.tokenizer.eos_token_id - and len(result["input_ids"]) < self.cutoff_len - ): - result["input_ids"].append(self.tokenizer.eos_token_id) - result["attention_mask"].append(1) - return result - else: - result = self.tokenizer( - prompt, - truncation=True, - max_length=self.cutoff_len + 1, - padding="max_length", - ) - return { - "input_ids": result["input_ids"][:-1], - "attention_mask": result["attention_mask"][:-1], - } - - def prepare_data(self, use_eos_token=True, **kwargs) -> None: - data = load_dataset("json", data_files=self.dataset) - - if self.val_set_size > 0: - train_val = data["train"].train_test_split( - test_size=self.val_set_size, shuffle=True, seed=42 # ! Seed = 42 (?) - ) - self.train_data = train_val["train"].shuffle().map(lambda x: self.generate_and_tokenize_prompt(x, use_eos_token=use_eos_token)) - self.val_data = train_val["test"].shuffle().map(lambda x: self.generate_and_tokenize_prompt(x, use_eos_token=use_eos_token)) - else: - self.train_data = data["train"].shuffle().map(lambda x: self.generate_and_tokenize_prompt(x, use_eos_token=use_eos_token)) - self.val_data = None - - # Auxiliary methods - def generate_prompt(self, data_point, **kwargs): - return "{0}\n\n{1}\n{2}\n\n{3}\n{4}\n\n{5}\n{6}".format( - "Below is an instruction that describes a task, paired with an input that provides further context. Write a response that appropriately completes the request.", - "### Instruction:", - data_point["instruction"], - "### Input:", - data_point["input"], - "### Response:", - data_point["output"] - ) - - def generate_and_tokenize_prompt(self, data_point, **kwargs): - prompt = self.generate_prompt(data_point, **kwargs) - return self.tokenize(prompt, **kwargs) - -# GPT4All-like Data -class TrainGPT4All(ATrainData): - def __init__(self, dataset: str, val_set_size: int, tokenizer, cutoff_len) -> None: - super().__init__(dataset, val_set_size, tokenizer, cutoff_len) - - def tokenize(self, prompt: str, use_eos_token=True, **kwargs) -> Dict[str, Any]: - pass - - def tokenize_inputs(self, examples): - max_length = self.cutoff_len - input_ids = torch.full((len(examples["prompt"]), max_length), self.tokenizer.pad_token_id) - # ignore bos - newline_tokens = self.tokenizer("\n", return_tensors="pt")["input_ids"][0, 1:] - - out = {"labels": [], "attention_mask": []} - for i, (prompt, response) in enumerate(zip(examples["prompt"], examples["response"])): - input_tokens = self.tokenizer(prompt, truncation=True, max_length=max_length // 2, return_tensors="pt")["input_ids"].squeeze() - if input_tokens.dim() == 0: - input_tokens = input_tokens.unsqueeze(0) - - input_len = len(input_tokens) - - # plus one since we remove bos from response - # but we subtract one since we want to add eos token - remaining_tokens = max_length - input_len - len(newline_tokens) + 1 - # remove bos - target_tokens = self.tokenizer(response, truncation=True, max_length=remaining_tokens, return_tensors="pt")["input_ids"].squeeze()[1:] - - input_ids[i, :input_len] = input_tokens - # add newline between prompt and response - newline_plus_inputs = input_len + len(newline_tokens) - input_ids[i, input_len: newline_plus_inputs] = newline_tokens - - # add target tokens, remove bos - input_ids[i, newline_plus_inputs: newline_plus_inputs + len(target_tokens)] = target_tokens - # add eos token, enforce stopping if we don't truncate - # we don't want long code to stop generating if truncated during training - if newline_plus_inputs + len(target_tokens) < max_length: - input_ids[i, newline_plus_inputs + len(target_tokens)] = self.tokenizer.eos_token_id - - labels = input_ids[i].clone() - labels[: newline_plus_inputs] = -100 - labels[labels == self.tokenizer.pad_token_id] = -100 - # to debug this, can set all values == -100 to the pad token, then assert that tokenizer.decode(labels, skip_special_tokens=True).strip() == response - - attention_mask = input_ids[i].ne(self.tokenizer.pad_token_id).int() - - out["labels"].append(labels) - out["attention_mask"].append(attention_mask) - - out["input_ids"] = input_ids - - out = {k: torch.stack(v) if isinstance(v, list) else v for k, v in out.items()} - - return out - - def prepare_data(self, **kwargs) -> None: - dataset = load_dataset("json", data_files=self.dataset) - - self.val_data = None - if self.val_set_size > 0: - dataset = dataset["train"].train_test_split( - test_size=self.val_set_size, shuffle=True, seed=42 # ! Seed = 42 (?) - ) - train_dataset, val_dataset = dataset["train"], dataset["test"] - - # tokenize inputs and return labels and attention mask - val_dataset = val_dataset.map( - lambda ele: self.tokenize_inputs(ele), - batched=True, - remove_columns=["source", "prompt"], - ) - self.val_data = val_dataset.with_format("torch") - else: - train_dataset = dataset["train"] - - train_dataset = train_dataset.map( - lambda ele: self.tokenize_inputs(ele), - batched=True, - remove_columns=["source", "prompt"], - ) - self.train_data = train_dataset.with_format("torch") diff --git a/triton_utils.py b/triton_utils.py deleted file mode 100644 index 7afcf46..0000000 --- a/triton_utils.py +++ /dev/null @@ -1,246 +0,0 @@ -import triton -import triton.language as tl -import torch -import custom_autotune - - -# code based https://github.com/fpgaminer/GPTQ-triton -@custom_autotune.autotune( - configs=[ - triton.Config({'BLOCK_SIZE_M': 256, 'BLOCK_SIZE_N': 64, 'BLOCK_SIZE_K': 32, 'GROUP_SIZE_M': 8}, num_stages=4, num_warps=4), - triton.Config({'BLOCK_SIZE_M': 64, 'BLOCK_SIZE_N': 256, 'BLOCK_SIZE_K': 32, 'GROUP_SIZE_M': 8}, num_stages=4, num_warps=4), - triton.Config({'BLOCK_SIZE_M': 128, 'BLOCK_SIZE_N': 128, 'BLOCK_SIZE_K': 32, 'GROUP_SIZE_M': 8}, num_stages=4, num_warps=4), - triton.Config({'BLOCK_SIZE_M': 128, 'BLOCK_SIZE_N': 64, 'BLOCK_SIZE_K': 32, 'GROUP_SIZE_M': 8}, num_stages=4, num_warps=4), - triton.Config({'BLOCK_SIZE_M': 64, 'BLOCK_SIZE_N': 128, 'BLOCK_SIZE_K': 32, 'GROUP_SIZE_M': 8}, num_stages=4, num_warps=4), - triton.Config({'BLOCK_SIZE_M': 128, 'BLOCK_SIZE_N': 32, 'BLOCK_SIZE_K': 32, 'GROUP_SIZE_M': 8}, num_stages=4, num_warps=4), - # These provided a benefit on a 3090 - triton.Config({'BLOCK_SIZE_M': 64, 'BLOCK_SIZE_N': 64, 'BLOCK_SIZE_K': 32, 'GROUP_SIZE_M': 8}, num_stages=4, num_warps=4), - triton.Config({'BLOCK_SIZE_M': 32, 'BLOCK_SIZE_N': 64, 'BLOCK_SIZE_K': 32, 'GROUP_SIZE_M': 8}, num_stages=4, num_warps=4), - triton.Config({'BLOCK_SIZE_M': 64, 'BLOCK_SIZE_N': 32, 'BLOCK_SIZE_K': 32, 'GROUP_SIZE_M': 8}, num_stages=4, num_warps=4), - triton.Config({'BLOCK_SIZE_M': 32, 'BLOCK_SIZE_N': 64, 'BLOCK_SIZE_K': 64, 'GROUP_SIZE_M': 8}, num_stages=4, num_warps=4), - triton.Config({'BLOCK_SIZE_M': 64, 'BLOCK_SIZE_N': 64, 'BLOCK_SIZE_K': 64, 'GROUP_SIZE_M': 8}, num_stages=4, num_warps=4), - triton.Config({'BLOCK_SIZE_M': 64, 'BLOCK_SIZE_N': 32, 'BLOCK_SIZE_K': 64, 'GROUP_SIZE_M': 8}, num_stages=4, num_warps=4), - triton.Config({'BLOCK_SIZE_M': 32, 'BLOCK_SIZE_N': 64, 'BLOCK_SIZE_K': 128, 'GROUP_SIZE_M': 8}, num_stages=4, num_warps=4), - ], - key=['M', 'N'], - nearest_power_of_two=True, -) - - -@triton.jit -def matmul_248_kernel(a_ptr, b_ptr, c_ptr, - scales_ptr, zeros_ptr, g_ptr, - M, N, K, bits, maxq, - stride_am, stride_ak, - stride_bk, stride_bn, - stride_cm, stride_cn, - stride_scales, stride_zeros, - BLOCK_SIZE_M: tl.constexpr, BLOCK_SIZE_N: tl.constexpr, BLOCK_SIZE_K: tl.constexpr, - GROUP_SIZE_M: tl.constexpr): - """ - Compute the matrix multiplication C = A x B. - A is of shape (M, K) float16 - B is of shape (K//8, N) int32 - C is of shape (M, N) float16 - scales is of shape (G, N) float16 - zeros is of shape (G, N) float16 - g_ptr is of shape (K) int32 - """ - infearure_per_bits = 32 // bits - - pid = tl.program_id(axis=0) - num_pid_m = tl.cdiv(M, BLOCK_SIZE_M) - num_pid_n = tl.cdiv(N, BLOCK_SIZE_N) - num_pid_k = tl.cdiv(K, BLOCK_SIZE_K) - num_pid_in_group = GROUP_SIZE_M * num_pid_n - group_id = pid // num_pid_in_group - first_pid_m = group_id * GROUP_SIZE_M - group_size_m = min(num_pid_m - first_pid_m, GROUP_SIZE_M) - pid_m = first_pid_m + (pid % group_size_m) - pid_n = (pid % num_pid_in_group) // group_size_m - - offs_am = pid_m * BLOCK_SIZE_M + tl.arange(0, BLOCK_SIZE_M) - offs_bn = pid_n * BLOCK_SIZE_N + tl.arange(0, BLOCK_SIZE_N) - offs_k = tl.arange(0, BLOCK_SIZE_K) - a_ptrs = a_ptr + (offs_am[:, None] * stride_am + offs_k[None, :] * stride_ak) # (BLOCK_SIZE_M, BLOCK_SIZE_K) - a_mask = (offs_am[:, None] < M) - # b_ptrs is set up such that it repeats elements along the K axis 8 times - b_ptrs = b_ptr + ((offs_k[:, None] // infearure_per_bits) * stride_bk + offs_bn[None, :] * stride_bn) # (BLOCK_SIZE_K, BLOCK_SIZE_N) - g_ptrs = g_ptr + offs_k - # shifter is used to extract the N bits of each element in the 32-bit word from B - scales_ptrs = scales_ptr + offs_bn[None, :] - zeros_ptrs = zeros_ptr + (offs_bn[None, :] // infearure_per_bits) - - shifter = (offs_k % infearure_per_bits) * bits - zeros_shifter = (offs_bn % infearure_per_bits) * bits - accumulator = tl.zeros((BLOCK_SIZE_M, BLOCK_SIZE_N), dtype=tl.float32) - - for k in range(0, num_pid_k): - g_idx = tl.load(g_ptrs) - - # Fetch scales and zeros; these are per-outfeature and thus reused in the inner loop - scales = tl.load(scales_ptrs + g_idx[:, None] * stride_scales) # (BLOCK_SIZE_K, BLOCK_SIZE_N,) - zeros = tl.load(zeros_ptrs + g_idx[:, None] * stride_zeros) # (BLOCK_SIZE_K, BLOCK_SIZE_N,) - - zeros = (zeros >> zeros_shifter[None, :]) & maxq - zeros = (zeros + 1) - - a = tl.load(a_ptrs, mask=a_mask, other=0.0) # (BLOCK_SIZE_M, BLOCK_SIZE_K) - b = tl.load(b_ptrs) # (BLOCK_SIZE_K, BLOCK_SIZE_N), but repeated - - # Now we need to unpack b (which is N-bit values) into 32-bit values - b = (b >> shifter[:, None]) & maxq # Extract the N-bit values - b = (b - zeros) * scales # Scale and shift - # ! Convert to fp16 - b = b.to(tl.float16) - a = a.to(tl.float16) - - accumulator += tl.dot(a, b) - a_ptrs += BLOCK_SIZE_K - b_ptrs += (BLOCK_SIZE_K // infearure_per_bits) * stride_bk - g_ptrs += BLOCK_SIZE_K - - c = accumulator.to(tl.float16) - c_ptrs = c_ptr + stride_cm * offs_am[:, None] + stride_cn * offs_bn[None, :] - c_mask = (offs_am[:, None] < M) & (offs_bn[None, :] < N) - tl.store(c_ptrs, c, mask=c_mask) - - -# code based https://github.com/fpgaminer/GPTQ-triton -@custom_autotune.autotune( - configs=[ - triton.Config({'BLOCK_SIZE_M': 256, 'BLOCK_SIZE_K': 64, 'BLOCK_SIZE_N': 32, 'GROUP_SIZE_M': 8}, num_stages=4, num_warps=4), - triton.Config({'BLOCK_SIZE_M': 64, 'BLOCK_SIZE_K': 256, 'BLOCK_SIZE_N': 32, 'GROUP_SIZE_M': 8}, num_stages=4, num_warps=4), - triton.Config({'BLOCK_SIZE_M': 128, 'BLOCK_SIZE_K': 128, 'BLOCK_SIZE_N': 32, 'GROUP_SIZE_M': 8}, num_stages=4, num_warps=4), - triton.Config({'BLOCK_SIZE_M': 128, 'BLOCK_SIZE_K': 64, 'BLOCK_SIZE_N': 32, 'GROUP_SIZE_M': 8}, num_stages=4, num_warps=4), - triton.Config({'BLOCK_SIZE_M': 64, 'BLOCK_SIZE_K': 128, 'BLOCK_SIZE_N': 32, 'GROUP_SIZE_M': 8}, num_stages=4, num_warps=4), - triton.Config({'BLOCK_SIZE_M': 128, 'BLOCK_SIZE_K': 32, 'BLOCK_SIZE_N': 32, 'GROUP_SIZE_M': 8}, num_stages=4, num_warps=4), - # These provided a benefit on a 3090 - triton.Config({'BLOCK_SIZE_M': 64, 'BLOCK_SIZE_K': 64, 'BLOCK_SIZE_N': 32, 'GROUP_SIZE_M': 8}, num_stages=4, num_warps=4), - triton.Config({'BLOCK_SIZE_M': 32, 'BLOCK_SIZE_K': 64, 'BLOCK_SIZE_N': 32, 'GROUP_SIZE_M': 8}, num_stages=4, num_warps=4), - triton.Config({'BLOCK_SIZE_M': 64, 'BLOCK_SIZE_K': 32, 'BLOCK_SIZE_N': 32, 'GROUP_SIZE_M': 8}, num_stages=4, num_warps=4), - triton.Config({'BLOCK_SIZE_M': 32, 'BLOCK_SIZE_K': 64, 'BLOCK_SIZE_N': 64, 'GROUP_SIZE_M': 8}, num_stages=4, num_warps=4), - triton.Config({'BLOCK_SIZE_M': 64, 'BLOCK_SIZE_K': 64, 'BLOCK_SIZE_N': 64, 'GROUP_SIZE_M': 8}, num_stages=4, num_warps=4), - triton.Config({'BLOCK_SIZE_M': 64, 'BLOCK_SIZE_K': 32, 'BLOCK_SIZE_N': 64, 'GROUP_SIZE_M': 8}, num_stages=4, num_warps=4), - triton.Config({'BLOCK_SIZE_M': 32, 'BLOCK_SIZE_K': 64, 'BLOCK_SIZE_N': 128, 'GROUP_SIZE_M': 8}, num_stages=4, num_warps=4), - ], - key=['M', 'K'], - nearest_power_of_two=True, -) - - -@triton.jit -def trans_matmul_248_kernel(a_ptr, b_ptr, c_ptr, - scales_ptr, zeros_ptr, g_ptr, - M, N, K, bits, maxq, - stride_am, stride_ak, - stride_bk, stride_bn, - stride_cm, stride_cn, - stride_scales, stride_zeros, - BLOCK_SIZE_M: tl.constexpr, BLOCK_SIZE_N: tl.constexpr, BLOCK_SIZE_K: tl.constexpr, - GROUP_SIZE_M: tl.constexpr): - """ - Compute the matrix multiplication C = A x B. - A is of shape (M, N) float16 - B is of shape (K//8, N) int32 - C is of shape (M, K) float16 - scales is of shape (G, N) float16 - zeros is of shape (G, N) float16 - g_ptr is of shape (K) int32 - """ - infearure_per_bits = 32 // bits - - pid = tl.program_id(axis=0) - num_pid_m = tl.cdiv(M, BLOCK_SIZE_M) - num_pid_k = tl.cdiv(K, BLOCK_SIZE_K) - num_pid_n = tl.cdiv(N, BLOCK_SIZE_N) - num_pid_in_group = GROUP_SIZE_M * num_pid_k - group_id = pid // num_pid_in_group - first_pid_m = group_id * GROUP_SIZE_M - group_size_m = min(num_pid_m - first_pid_m, GROUP_SIZE_M) - pid_m = first_pid_m + (pid % group_size_m) - pid_k = (pid % num_pid_in_group) // group_size_m - - offs_am = pid_m * BLOCK_SIZE_M + tl.arange(0, BLOCK_SIZE_M) - offs_bk = pid_k * BLOCK_SIZE_K + tl.arange(0, BLOCK_SIZE_K) - offs_n = tl.arange(0, BLOCK_SIZE_N) - a_ptrs = a_ptr + (offs_am[:, None] * stride_am + offs_n[None, :] * stride_ak) # (BLOCK_SIZE_M, BLOCK_SIZE_N) - a_mask = (offs_am[:, None] < M) - # b_ptrs is set up such that it repeats elements along the K axis 8 times - b_ptrs = b_ptr + ((offs_bk[:, None] // infearure_per_bits) * stride_bk + offs_n[None, :] * stride_bn) # (BLOCK_SIZE_K, BLOCK_SIZE_N) - g_ptrs = g_ptr + offs_bk - g_idx = tl.load(g_ptrs) - - # shifter is used to extract the N bits of each element in the 32-bit word from B - scales_ptrs = scales_ptr + offs_n[None, :] + g_idx[:, None] * stride_scales - zeros_ptrs = zeros_ptr + (offs_n[None, :] // infearure_per_bits) + g_idx[:, None] * stride_zeros - - shifter = (offs_bk % infearure_per_bits) * bits - zeros_shifter = (offs_n % infearure_per_bits) * bits - accumulator = tl.zeros((BLOCK_SIZE_M, BLOCK_SIZE_K), dtype=tl.float32) - - for k in range(0, num_pid_n): - # Fetch scales and zeros; these are per-outfeature and thus reused in the inner loop - scales = tl.load(scales_ptrs) # (BLOCK_SIZE_K, BLOCK_SIZE_N,) - zeros = tl.load(zeros_ptrs) # (BLOCK_SIZE_K, BLOCK_SIZE_N,) - - zeros = (zeros >> zeros_shifter[None, :]) & maxq - zeros = (zeros + 1) - - a = tl.load(a_ptrs, mask=a_mask, other=0.) # (BLOCK_SIZE_M, BLOCK_SIZE_N) - b = tl.load(b_ptrs) # (BLOCK_SIZE_K, BLOCK_SIZE_N), but repeated - - # Now we need to unpack b (which is N-bit values) into 32-bit values - b = (b >> shifter[:, None]) & maxq # Extract the N-bit values - b = (b - zeros) * scales # Scale and shift - b = tl.trans(b) - # ! Convert to fp16 - b = b.to(tl.float16) - a = a.to(tl.float16) - - accumulator += tl.dot(a, b) - a_ptrs += BLOCK_SIZE_N - b_ptrs += BLOCK_SIZE_N - scales_ptrs += BLOCK_SIZE_N - zeros_ptrs += (BLOCK_SIZE_N // infearure_per_bits) - - c = accumulator.to(tl.float16) - c_ptrs = c_ptr + stride_cm * offs_am[:, None] + stride_cn * offs_bk[None, :] - c_mask = (offs_am[:, None] < M) & (offs_bk[None, :] < K) - tl.store(c_ptrs, c, mask=c_mask) - - -def triton_matmul(input, qweight, scales, qzeros, g_idx, bits, maxq): - assert input.shape[-1] == qweight.shape[0] * 32 // bits - outshape = input.shape[:-1] + (qweight.shape[1],) - input = input.reshape(-1, input.shape[-1]) - output = torch.empty((input.shape[0], qweight.shape[1]), device=scales.device, dtype=torch.float16) - grid = lambda META: (triton.cdiv(input.shape[0], META['BLOCK_SIZE_M']) * triton.cdiv(qweight.shape[1], META['BLOCK_SIZE_N']),) - matmul_248_kernel[grid](input, qweight, output, - scales, qzeros, g_idx, - input.shape[0], qweight.shape[1], input.shape[1], bits, maxq, - input.stride(0), input.stride(1), - qweight.stride(0), qweight.stride(1), - output.stride(0), output.stride(1), - scales.stride(0), qzeros.stride(0)) - output = output.reshape(outshape) - return output - - -def triton_matmul_transpose(input, qweight, scales, qzeros, g_idx, bits, maxq): - assert input.shape[-1] == qweight.shape[1] - out_dim = qweight.shape[0] * 32 // bits - outshape = input.shape[:-1] + (out_dim,) - input = input.reshape(-1, input.shape[-1]) - output_shape_mid = (input.shape[0], out_dim) - output = torch.empty((output_shape_mid[0], output_shape_mid[1]), device=scales.device, dtype=torch.float16) - grid = lambda META: (triton.cdiv(input.shape[0], META['BLOCK_SIZE_M']) * triton.cdiv(output_shape_mid[1], META['BLOCK_SIZE_K']),) - trans_matmul_248_kernel[grid](input, qweight, output, - scales, qzeros, g_idx, - input.shape[0], qweight.shape[1], output_shape_mid[1], bits, maxq, - input.stride(0), input.stride(1), - qweight.stride(0), qweight.stride(1), - output.stride(0), output.stride(1), - scales.stride(0), qzeros.stride(0)) - output = output.reshape(outshape) - return output