--- license: mit language: - pt base_model: - meta-llama/Llama-3.1-8B-Instruct library_name: peft tags: - bode - llama - portuguese --- Recomendamos fortemente que utilizem o Kaggle com GPU. Você pode usar o Bode facilmente com a biblioteca Transformers do HuggingFace. Entretanto, é necessário ter a autorização de acesso ao [Llama-3.1-8B-Instruct](https://huggingface.co/meta-llama/Llama-3.1-8B-Instruct). Abaixo, colocamos um exemplo simples de como carregar o modelo e gerar texto: ```python # Downloads necessários !pip install transformers !pip install einops accelerate bitsandbytes !pip install sentence_transformers !pip install git+https://github.com/huggingface/peft.git from peft import PeftModel from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig import transformers import torch from peft import PeftModel, PeftConfig llm_model = "recogna-nlp/Bode-3.1-8B-Instruct-lora" hf_auth = 'HF_KEY' config = PeftConfig.from_pretrained(llm_model) model = AutoModelForCausalLM.from_pretrained(config.base_model_name_or_path, trust_remote_code=True, return_dict=True, load_in_4bit=True, device_map='auto', token=hf_auth) tokenizer = AutoTokenizer.from_pretrained(config.base_model_name_or_path, token=hf_auth) model = PeftModel.from_pretrained(model, llm_model) # Caso ocorra o seguinte erro: "ValueError: We need an `offload_dir`... Você deve acrescentar o parâmetro: offload_folder="./offload_dir". model.eval() #Testando geração de texto def generate_prompt(instruction, input=None): if input: return f"""Abaixo está uma instrução que descreve uma tarefa, juntamente com uma entrada que fornece mais contexto. Escreva uma resposta que complete adequadamente o pedido. ### Instrução: {instruction} ### Entrada: {input} ### Resposta:""" else: return f"""Abaixo está uma instrução que descreve uma tarefa. Escreva uma resposta que complete adequadamente o pedido. ### Instrução: {instruction} ### Resposta:""" generation_config = GenerationConfig( num_beams=2, do_sample=False, pad_token_id=tokenizer.eos_token_id ) def evaluate(instruction, input=None): prompt = generate_prompt(instruction, input) inputs = tokenizer(prompt, return_tensors="pt") input_ids = inputs["input_ids"].cuda() attention_mask = inputs["attention_mask"].cuda() 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_length=800, ) for s in generation_output.sequences: output = tokenizer.decode(s, skip_special_tokens=True) print("Resposta:", output.split("### Resposta:")[1].strip()) evaluate("Faça uma função em python de multiplicação entre 3 valores") ```