🚀 AceGPT 13B Chat - AWQ
このプロジェクトは、FreedomIntelligenceのAceGPT 13B Chat のAWQモデルファイルを提供しています。簡易なGPUを持つユーザーにアラビア語の大規模言語モデルを利用可能にするため、重要な2つのモデルを量子化しました。
🚀 クイックスタート
モデル情報
プロパティ |
詳細 |
モデル作成者 |
FreedomIntelligence |
元のモデル |
AceGPT 13B Chat |
モデルタイプ |
llama2 |
訓練データ |
FreedomIntelligence/Arabic-Vicuna-80、FreedomIntelligence/Arabic-AlpacaEval、FreedomIntelligence/MMLU_Arabic、FreedomIntelligence/EXAMs、FreedomIntelligence/ACVA-Arabic-Cultural-Value-Alignment |
ライセンス |
llama2 |
量子化担当者 |
MohamedRashad |
モデル説明
このリポジトリには、FreedomIntelligenceのAceGPT 13B Chat のAWQモデルファイルが含まれています。私は、シンプルなGPUを持つ消費者にアラビア語のLLMを利用可能にするために、2つの重要なモデルを量子化しました。
AWQについて
AWQは、効率的で正確かつ非常に高速な低ビット重み量子化手法で、現在は4ビット量子化をサポートしています。GPTQと比較すると、最も一般的に使用されるGPTQ設定と同等またはそれ以上の品質で、Transformerベースの推論をより高速に提供します。
以下のものでサポートされています。
✨ 主な機能
- アラビア語の大規模言語モデルを量子化し、簡易なGPUでの利用を可能にします。
- AWQ量子化手法を使用することで、高速かつ高精度な推論を実現します。
📦 インストール
Pythonコードからの推論に必要なパッケージのインストール
pip3 install --upgrade "autoawq>=0.1.6" "transformers>=4.35.0"
⚠️ 重要提示
PyTorch 2.0.1を使用している場合、上記のAutoAWQコマンドは自動的にPyTorch 2.1.0にアップグレードします。
💡 使用建议
CUDA 11.8を使用しており、PyTorch 2.0.1を引き続き使用したい場合は、代わりに以下のコマンドを実行してください。
pip3 install https://github.com/casper-hansen/AutoAWQ/releases/download/v0.1.6/autoawq-0.1.6+cu118-cp310-cp310-linux_x86_64.whl
AutoAWQ を事前構築済みのホイールを使用してインストールする際に問題がある場合は、ソースからインストールしてください。
pip3 uninstall -y autoawq
git clone https://github.com/casper-hansen/AutoAWQ
cd AutoAWQ
pip3 install .
💻 使用例
基本的な使用法
from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer
model_name_or_path = "MohamedRashad/AceGPT-13B-chat-AWQ"
tokenizer = AutoTokenizer.from_pretrained(model_name_or_path, padding_side="right")
model = AutoModelForCausalLM.from_pretrained(
model_name_or_path,
use_flash_attention_2=True,
torch_dtype=torch.float16,
low_cpu_mem_usage=True,
device_map="auto"
)
streamer = TextStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)
prompt = "ما أجمل بيت شعر فى اللغة العربية ؟"
prompt_template=f'''[INST] <<SYS>>\nأنت مساعد مفيد ومحترم وصادق. أجب دائما بأكبر قدر ممكن من المساعدة بينما تكون آمنا. يجب ألا تتضمن إجاباتك أي محتوى ضار أو غير أخلاقي أو عنصري أو جنسي أو سام أو خطير أو غير قانوني. يرجى التأكد من أن ردودك غير متحيزة اجتماعيا وإيجابية بطبيعتها.\n\nإذا كان السؤال لا معنى له أو لم يكن متماسكا من الناحية الواقعية، اشرح السبب بدلا من الإجابة على شيء غير صحيح. إذا كنت لا تعرف إجابة سؤال ما، فيرجى عدم مشاركة معلومات خاطئة.\n<</SYS>>\n\n
[INST] {prompt} [/INST]
'''
tokens = tokenizer(
prompt_template,
return_tensors='pt'
).input_ids.cuda()
generation_params = {
"do_sample": True,
"temperature": 0.7,
"top_p": 0.95,
"top_k": 40,
"max_new_tokens": 512,
"repetition_penalty": 1.1
}
generation_output = model.generate(
tokens,
streamer=streamer,
**generation_params
)
generation_output = model.generate(
tokens,
**generation_params
)
token_output = generation_output[0]
text_output = tokenizer.decode(token_output)
print("model.generate output: ", text_output)
from transformers import pipeline
pipe = pipeline(
"text-generation",
model=model,
tokenizer=tokenizer,
**generation_params
)
pipe_output = pipe(prompt_template)[0]['generated_text']
print("pipeline output: ", pipe_output)
高度な使用法
from awq import AutoAWQForCausalLM
from transformers import AutoTokenizer, AutoModelForCausalLM
model_path = "FreedomIntelligence/AceGPT-13B-chat"
quant_path = "AceGPT-13B-chat-AWQ"
quant_config = {"zero_point": True, "q_group_size": 128, "w_bit": 4, "version": "GEMM"}
load_config = {
"low_cpu_mem_usage": True,
"device_map": "auto",
"trust_remote_code": True,
}
model = AutoAWQForCausalLM.from_pretrained(model_path, **load_config)
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
model.quantize(tokenizer, quant_config=quant_config)
model.save_quantized(quant_path)
tokenizer.save_pretrained(quant_path)
model = AutoModelForCausalLM.from_pretrained(quant_path)
tokenizer = AutoTokenizer.from_pretrained(quant_path)
model.push_to_hub(quant_path)
tokenizer.push_to_hub(quant_path)
📚 ドキュメント
プロンプトテンプレート
[INST] <<SYS>>\nأنت مساعد مفيد ومحترم وصادق. أجب دائما بأكبر قدر ممكن من المساعدة بينما تكون آمنا. يجب ألا تتضمن إجاباتك أي محتوى ضار أو غير أخلاقي أو عنصري أو جنسي أو سام أو خطير أو غير قانوني. يرجى التأكد من أن ردودك غير متحيزة اجتماعيا وإيجابية بطبيعتها.\n\nإذا كان السؤال لا معنى له أو لم يكن متماسكا من الناحية الواقعية، اشرح السبب بدلا من الإجابة على شيء غير صحيح. إذا كنت لا تعرف إجابة سؤال ما، فيرجى عدم مشاركة معلومات خاطئة.\n<</SYS>>\n\n
[INST] {prompt} [/INST]
📄 ライセンス
このモデルはllama2ライセンスの下で提供されています。