🚀 Llama 2 7B 4-bit GPTQ Python 代碼生成器 👩💻
本模型是 我基於 Llama 2 7B 4-bit 的 Python 代碼生成器進行的 GPTQ 量化版本。基礎模型鏈接 在此。
GPTQ 算法的量化參數如下:
- 4 位量化
- 分組大小為 128
- 數據集:C4
- 遞減激活:否
✨ 主要特性
模型描述
Llama 2 7B 4-bit Python 代碼生成器 是 Llama 2 7B 模型的微調版本,使用 PEFT 庫和 bitsandbytes 以 4 位進行 QLoRa 微調。
量化說明
以下是從 Benjamin Marie 在 Medium 上的一篇精彩文章 "GPTQ or bitsandbytes: Which Quantization Method to Use for LLMs — Examples with Llama 2"(僅對 Medium 訂閱者開放)中提取的快速定義:
“GPTQ(Frantar 等人,2023 年)首次應用於準備部署的模型。換句話說,一旦模型完全微調完成,就會應用 GPTQ 來減小其大小。GPTQ 可以將權重精度降低到 4 位或 3 位。
實際上,GPTQ 主要用於 4 位量化。3 位量化已被證明非常不穩定(Dettmers 和 Zettlemoyer,2023 年)。它在不將整個模型加載到內存的情況下進行量化。相反,GPTQ 逐模塊加載和量化大語言模型。
量化還需要一小部分數據進行校準,這在消費級 GPU 上可能需要一個多小時。”
💻 使用示例
基礎用法
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "edumunozsala/llama-2-7b-int4-GPTQ-python-code-20k"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype=torch.float16, device_map="auto")
instruction="Write a Python function to display the first and last elements of a list."
input=""
prompt = f"""### Instruction:
Use the Task below and the Input given to write the Response, which is a programming code that can solve the Task.
### Task:
{instruction}
### Input:
{input}
### Response:
"""
input_ids = tokenizer(prompt, return_tensors="pt", truncation=True).input_ids.cuda()
outputs = model.generate(input_ids=input_ids, max_new_tokens=128, do_sample=True, top_p=0.9,temperature=0.3)
print(f"Prompt:\n{prompt}\n")
print(f"Generated instruction:\n{tokenizer.batch_decode(outputs.detach().cpu().numpy(), skip_special_tokens=True)[0][len(prompt):]}")
引用說明
@misc {edumunozsala_2023,
author = { {Eduardo Muñoz} },
title = { llama-2-7b-int4-GPTQ-python-coder },
year = 2023,
url = { https://huggingface.co/edumunozsala/llama-2-7b-int4-GPTQ-python-code-20k },
publisher = { Hugging Face }
}
📄 許可證
本項目採用 GPL-3.0 許可證。
屬性 |
詳情 |
模型類型 |
Llama 2 7B 4-bit GPTQ 量化的 Python 代碼生成器 |
訓練數據 |
iamtarun/python_code_instructions_18k_alpaca |