英文

FalCoder ??‍?

Falcon-7b在CodeAlpaca 20k指令数据集上进行了微调,使用了QLoRA方法和 PEFT 库。

模型描述?

Falcon 7B

训练和评估数据?

CodeAlpaca_20K : 包含用于对Code Alpaca模型进行微调的20K条指令跟随数据。

训练超参数⚙

TBA

训练结果?️

Step Training Loss Validation Loss
100 0.798500 0.767996
200 0.725900 0.749880
300 0.669100 0.748029
400 0.687300 0.742342
500 0.579900 0.736735

使用示例?‍?

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, AutoTokenizer

model_id = "mrm8488/falcoder-7b"

tokenizer = AutoTokenizer.from_pretrained(model_id)

model = AutoModelForCausalLM.from_pretrained(model_id).to("cuda")

def generate(
        instruction,
        max_new_tokens=128,
        temperature=0.1,
        top_p=0.75,
        top_k=40,
        num_beams=4,
        **kwargs
):
    prompt = instruction + "\n### Solution:\n"
    print(prompt)
    inputs = tokenizer(prompt, return_tensors="pt")
    input_ids = inputs["input_ids"].to("cuda")
    attention_mask = inputs["attention_mask"].to("cuda")
    generation_config = GenerationConfig(
        temperature=temperature,
        top_p=top_p,
        top_k=top_k,
        num_beams=num_beams,
        **kwargs,
    )
    with torch.no_grad():
        generation_output = model.generate(
            input_ids=input_ids,
            attention_mask=attention_mask,
            generation_config=generation_config,
            return_dict_in_generate=True,
            output_scores=True,
            max_new_tokens=max_new_tokens,
            early_stopping=True
        )
    s = generation_output.sequences[0]
    output = tokenizer.decode(s)
    return output.split("### Solution:")[1].lstrip("\n")

instruction = "Design a class for representing a person in Python."
print(generate(instruction))

引用

@misc {manuel_romero_2023,
    author       = { {Manuel Romero} },
    title        = { falcoder-7b (Revision e061237) },
    year         = 2023,
    url          = { https://huggingface.co/mrm8488/falcoder-7b },
    doi          = { 10.57967/hf/0789 },
    publisher    = { Hugging Face }
}