Views
No views yet

text-davinci-003 engine. This instruction data can be used to conduct instruction-tuning for language models and make the language model follow instruction better.text-davinci-003 engine to generate the instruction data instead of davinci.text-davinci-003.1import torch
2from peft import PeftModel, PeftConfig
3from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig
4
5peft_model_id = "platzi/chivoom"
6config = PeftConfig.from_pretrained(peft_model_id)
7model = AutoModelForCausalLM.from_pretrained(config.base_model_name_or_path, return_dict=True, load_in_8bit=True, device_map="auto")
8tokenizer = AutoTokenizer.from_pretrained("bigscience/bloom-7b1")
9
10model = PeftModel.from_pretrained(model, peft_model_id)
11model.eval()
12
13# Based on the inference code by `tloen/alpaca-lora`
14def generate_prompt(instruction, input=None):
15 if input:
16 return f"""A continuación se muestra una instrucción que describe una tarea, emparejada con una entrada que proporciona más contexto. Escribe una respuesta que complete adecuadamente la petición.
17### Instrucción:
18{instruction}
19### Entrada:
20{input}
21### Respuesta:"""
22 else:
23 return f"""A continuación se muestra una instrucción que describe una tarea. Escribe una respuesta que complete adecuadamente la petición.
24### Instrucción:
25{instruction}
26### Respuesta:"""
27
28def generate(
29 instruction,
30 input=None,
31 temperature=0.1,
32 top_p=0.75,
33 top_k=40,
34 num_beams=4,
35 **kwargs,
36):
37 prompt = generate_prompt(instruction, input)
38 inputs = tokenizer(prompt, return_tensors="pt")
39 input_ids = inputs["input_ids"].cuda()
40 generation_config = GenerationConfig(
41 temperature=temperature,
42 top_p=top_p,
43 top_k=top_k,
44 num_beams=num_beams,
45 **kwargs,
46 )
47 with torch.no_grad():
48 generation_output = model.generate(
49 input_ids=input_ids,
50 generation_config=generation_config,
51 return_dict_in_generate=True,
52 output_scores=True,
53 max_new_tokens=256,
54 )
55 s = generation_output.sequences[0]
56 output = tokenizer.decode(s)
57 return output.split("### Response:")[1]
58
59instruction = "¿Qué es un chivo?"
60
61print("Instrucción:", instruction)
62print("Respuesta:", generate(instruction))