模型:
TheBloke/h2ogpt-oasst1-512-30B-HF
Chat & support: my new Discord server
Want to contribute? TheBloke's Patreon page
这是一个float16 HF格式的模型文件 H2O.ai's h2ogpt-research-oig-oasst1-512-30b 。
这是将它们的LoRA与基础Llama 30B合并的结果。
如需更多支持以及关于这些模型和人工智能的讨论,请加入我们的社区:
感谢 chirper.ai 团队!
许多人询问是否可以做贡献。我喜欢提供模型并帮助人们,非常乐意能够有更多时间进行这些工作,同时也希望扩展到新的项目,如微调/训练等。
如果您能够并愿意做出贡献,我将非常感激,并且这将帮助我继续提供更多模型,并开始开展新的人工智能项目。
捐赠者将优先获得关于所有人工智能 / LLM / 模型问题和请求的支持,可以访问私人Discord房间,以及其他福利。
Patreon特别致谢:Aemon Algiz,Dmitriy Samsonov,Nathan LeClaire,Trenton Dambrowitz,Mano Prime,David Flickinger,vamX,Nikolai Manek,senxiiz,Khalefa Al-Ahmad,Illia Dulskyi,Jonathan Leane,Talal Aujan,V. Lukas,Joseph William Delisle,Pyrater,Oscar Rangel,Lone Striker,Luke Pendergrass,Eugene Pentland,Sebastain Graf,Johann-Peter Hartman。
感谢所有慷慨的赞助者和捐赠者!
H2O.ai的h2oai/h2ogpt-research-oig-oasst1-512-30b是一个300亿参数的大型语言模型,仅供研究使用。
由于Meta AI对LLaMA模型的许可限制,直接分发基于LLaMA的模型是不可能的。因此,我们提供LORA权重。
模型是使用h2oGPT代码进行训练的:
torchrun --nproc_per_node=8 finetune.py --base_model=decapoda-research/llama-30b-hf --micro_batch_size=1 --batch_size=8 --cutoff_len=512 --num_epochs=2.0 --val_set_size=0 --eval_steps=100000 --save_steps=17000 --save_total_limit=20 --prompt_type=plain --save_code=True --train_8bit=False --run_id=llama30b_17 --llama_flash_attn=True --lora_r=64 --lora_target_modules=['q_proj', 'k_proj', 'v_proj', 'o_proj'] --learning_rate=2e-4 --lora_alpha=32 --drop_truncations=True --data_path=h2oai/h2ogpt-oig-oasst1-instruct-cleaned-v2 --data_mix_in_path=h2oai/openassistant_oasst1_h2ogpt --data_mix_in_factor=1.0 --data_mix_in_prompt_type=plain --data_mix_in_col_dict={'input': 'input'}
在h2oGPT Hash中:131f6d098b43236b5f91e76fc074ad089d6df368
这个模型仅提供了最后一个检查点(在第2.0个纪元和第137,846个步骤) ,因为LORA状态已经足够大,并且有足够的检查点使总运行量达到19GB。如有需要,可以随时请求其他检查点,我们可以考虑添加更多。
使用: https://github.com/h2oai/h2ogpt/blob/main/export_hf_checkpoint.py ,并更改:
BASE_MODEL = 'decapoda-research/llama-30b-hf' LORA_WEIGHTS = '<lora_weights_path>' OUTPUT_NAME = "local_h2ogpt-research-oasst1-512-30b"
其中<lora_weights_path>是一个包含此HF模型存储库中的文件的某个名称的目录:
构建HF模型后,要在具有GPU的计算机上使用transformers库使用该模型,请确保已安装transformers和accelerate库。
pip install transformers==4.28.1 pip install accelerate==0.18.0
import torch from transformers import pipeline generate_text = pipeline(model="local_h2ogpt-research-oasst1-512-30b", torch_dtype=torch.bfloat16, trust_remote_code=True, device_map="auto") res = generate_text("Why is drinking water so healthy?", max_new_tokens=100) print(res[0]["generated_text"])
或者,如果您不希望使用trust_remote_code=True,您可以下载 instruct_pipeline.py ,将其存储在笔记本旁边,并根据加载的模型和tokenizer构建自己的流水线:
import torch from h2oai_pipeline import H2OTextGenerationPipeline from transformers import AutoModelForCausalLM, AutoTokenizer tokenizer = AutoTokenizer.from_pretrained("local_h2ogpt-research-oasst1-512-30b", padding_side="left") model = AutoModelForCausalLM.from_pretrained("local_h2ogpt-research-oasst1-512-30b", torch_dtype=torch.bfloat16, device_map="auto") generate_text = H2OTextGenerationPipeline(model=model, tokenizer=tokenizer) res = generate_text("Why is drinking water so healthy?", max_new_tokens=100) print(res[0]["generated_text"])
PeftModelForCausalLM( (base_model): LoraModel( (model): LlamaForCausalLM( (model): LlamaModel( (embed_tokens): Embedding(32000, 6656, padding_idx=31999) (layers): ModuleList( (0-59): 60 x LlamaDecoderLayer( (self_attn): LlamaAttention( (q_proj): Linear( in_features=6656, out_features=6656, bias=False (lora_dropout): ModuleDict( (default): Dropout(p=0.05, inplace=False) ) (lora_A): ModuleDict( (default): Linear(in_features=6656, out_features=64, bias=False) ) (lora_B): ModuleDict( (default): Linear(in_features=64, out_features=6656, bias=False) ) ) (k_proj): Linear( in_features=6656, out_features=6656, bias=False (lora_dropout): ModuleDict( (default): Dropout(p=0.05, inplace=False) ) (lora_A): ModuleDict( (default): Linear(in_features=6656, out_features=64, bias=False) ) (lora_B): ModuleDict( (default): Linear(in_features=64, out_features=6656, bias=False) ) ) (v_proj): Linear( in_features=6656, out_features=6656, bias=False (lora_dropout): ModuleDict( (default): Dropout(p=0.05, inplace=False) ) (lora_A): ModuleDict( (default): Linear(in_features=6656, out_features=64, bias=False) ) (lora_B): ModuleDict( (default): Linear(in_features=64, out_features=6656, bias=False) ) ) (o_proj): Linear( in_features=6656, out_features=6656, bias=False (lora_dropout): ModuleDict( (default): Dropout(p=0.05, inplace=False) ) (lora_A): ModuleDict( (default): Linear(in_features=6656, out_features=64, bias=False) ) (lora_B): ModuleDict( (default): Linear(in_features=64, out_features=6656, bias=False) ) ) (rotary_emb): LlamaRotaryEmbedding() ) (mlp): LlamaMLP( (gate_proj): Linear(in_features=6656, out_features=17920, bias=False) (down_proj): Linear(in_features=17920, out_features=6656, bias=False) (up_proj): Linear(in_features=6656, out_features=17920, bias=False) (act_fn): SiLUActivation() ) (input_layernorm): LlamaRMSNorm() (post_attention_layernorm): LlamaRMSNorm() ) ) (norm): LlamaRMSNorm() ) (lm_head): Linear(in_features=6656, out_features=32000, bias=False) ) ) ) trainable params: 204472320 || all params: 32733415936 || trainable%: 0.6246592790675496
{ "base_model_name_or_path": "decapoda-research/llama-30b-hf", "bias": "none", "fan_in_fan_out": false, "inference_mode": true, "init_lora_weights": true, "lora_alpha": 32, "lora_dropout": 0.05, "modules_to_save": null, "peft_type": "LORA", "r": 64, "target_modules": [ "q_proj", "k_proj", "v_proj", "o_proj" ], "task_type": "CAUSAL_LM"
经典基准与基础LLaMa 30B模型一致,但对于对话目的来说并不实用。可以使用GPT3.5或GPT4来评估回答,而这里我们使用了一个基于RLHF的奖励模型。这是使用h2oGPT运行的:
python generate.py --base_model=decapoda-research/llama-30b-hf --gradio=False --infer_devices=False --eval_sharegpt_prompts_only=100 --eval_sharegpt_as_output=False --lora_weights=llama-30b-hf.h2oaih2ogpt-oig-oasst1-instruct-cleaned-v2.2.0_epochs.131f6d098b43236b5f91e76fc074ad089d6df368.llama30b_17
因此,该模型的奖励模型得分平均值为0.55,中位数为0.58。这与我们的 20B model 得到的0.49平均值和0.48中位数以及 Dollyv2 得到的0.37平均值和0.27中位数相比。
以下是得分的完整分布图:
h2oGPT 20B的相同图:
DB Dollyv2的相同图:
在使用此存储库中提供的大型语言模型之前,请仔细阅读此免责声明。使用模型即表示您同意以下条款和条件。
通过使用此存储库中提供的大型语言模型,您同意接受并遵守此免责声明中规定的条款和条件。如果您不同意本免责声明的任何部分,您应避免使用该模型和由其生成的任何内容。