🚀 DiscoLM German 7B v1 - AWQ
このモデルは、ドイツ語に特化した大規模言語モデルで、Disco Researchによって開発されました。AWQ形式で量子化されており、GPUでの高速推論が可能です。
🚀 クイックスタート
このセクションでは、DiscoLM German 7B v1 - AWQモデルの基本的な情報と、各種環境での使用方法を説明します。
✨ 主な機能
- AWQ量子化:効率的で高速な低ビット重み量子化手法で、4ビット量子化に対応しています。
- 多言語対応:ドイツ語と英語に対応しています。
- 複数の推論環境対応:Text Generation Webui、vLLM、Hugging Face Text Generation Inference (TGI)、Transformersなどの環境で使用できます。
📦 インストール
text-generation-webuiでの使用方法
- text-generation-webuiの最新バージョンを使用していることを確認してください。
- Model tabをクリックします。
- Download custom model or LoRAの下に、
TheBloke/DiscoLM_German_7b_v1-AWQ
を入力します。
- Downloadをクリックします。
- モデルのダウンロードが完了すると、"Done"と表示されます。
- 左上のModelの横にある更新アイコンをクリックします。
- Modelのドロップダウンから、先ほどダウンロードしたモデル
DiscoLM_German_7b_v1-AWQ
を選択します。
- Loader: AutoAWQを選択します。
- Loadをクリックすると、モデルがロードされ、使用可能になります。
- カスタム設定が必要な場合は、設定を行ってから右上のSave settings for this modelをクリックし、続いてReload the Modelをクリックします。
- 準備ができたら、Text Generationタブをクリックし、プロンプトを入力して始めましょう!
必要なパッケージのインストール
pip3 install --upgrade "autoawq>=0.1.6" "transformers>=4.35.0"
💻 使用例
vLLMを使用した推論
from vllm import LLM, SamplingParams
prompts = [
"Tell me about AI",
"Write a story about llamas",
"What is 291 - 150?",
"How much wood would a woodchuck chuck if a woodchuck could chuck wood?",
]
prompt_template=f'''<|im_start|>system
{system_message}<|im_end|>
<|im_start|>user
{prompt}<|im_end|>
<|im_start|>assistant
'''
prompts = [prompt_template.format(prompt=prompt) for prompt in prompts]
sampling_params = SamplingParams(temperature=0.8, top_p=0.95)
llm = LLM(model="TheBloke/DiscoLM_German_7b_v1-AWQ", quantization="awq", dtype="auto")
outputs = llm.generate(prompts, sampling_params)
for output in outputs:
prompt = output.prompt
generated_text = output.outputs[0].text
print(f"Prompt: {prompt!r}, Generated text: {generated_text!r}")
Transformersを使用した推論
from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer
model_name_or_path = "TheBloke/DiscoLM_German_7b_v1-AWQ"
tokenizer = AutoTokenizer.from_pretrained(model_name_or_path)
model = AutoModelForCausalLM.from_pretrained(
model_name_or_path,
low_cpu_mem_usage=True,
device_map="cuda:0"
)
streamer = TextStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)
prompt = "Tell me about AI"
prompt_template=f'''<|im_start|>system
{system_message}<|im_end|>
<|im_start|>user
{prompt}<|im_end|>
<|im_start|>assistant
'''
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)
📚 詳細ドキュメント
提供されるファイルとAWQパラメータ
現在、128g GEMMモデルのみをリリースしています。グループサイズ32のモデルとGEMVカーネルモデルの追加が積極的に検討されています。
モデルはシャーディングされたsafetensorsファイルとしてリリースされます。
プロンプトテンプレート: ChatML
<|im_start|>system
{system_message}<|im_end|>
<|im_start|>user
{prompt}<|im_end|>
<|im_start|>assistant
互換性
提供されるファイルは、以下の環境で動作することがテストされています。
🔧 技術詳細
AWQについて
AWQは、効率的で正確かつ非常に高速な低ビット重み量子化手法で、現在は4ビット量子化をサポートしています。GPTQと比較すると、同等またはそれ以上の品質で、Transformerベースの推論をより高速に行うことができます。
AWQモデルは現在、LinuxとWindowsで、NVidia GPUのみでサポートされています。macOSユーザーは、代わりにGGUFモデルを使用してください。
AWQは以下の環境でサポートされています。
📄 ライセンス
このモデルは、Apache-2.0ライセンスの下で提供されています。