esraderey commited on
Commit
0dd42d1
·
verified ·
1 Parent(s): d600aa0

Ficha: ejemplo de uso con el recorte de la sangría inicial

Browse files
Files changed (1) hide show
  1. README.md +10 -2
README.md CHANGED
@@ -38,11 +38,19 @@ logits en la conversión: 3.6e-05.
38
  from transformers import AutoModelForCausalLM, AutoTokenizer
39
  tk = AutoTokenizer.from_pretrained("esraderey/chispa-20m-python")
40
  m = AutoModelForCausalLM.from_pretrained("esraderey/chispa-20m-python")
41
- prompt = "<fim_prefix>def area(r):\n return <fim_suffix>\n<fim_middle>"
 
 
42
  ids = tk(prompt, return_tensors="pt").input_ids
43
- print(tk.decode(m.generate(ids, max_new_tokens=16, do_sample=False)[0][ids.shape[1]:]))
 
 
44
  ```
45
 
 
 
 
 
46
  ## Evaluación (repositorios retenidos, 20,000 cursores dentro de cuerpos de función)
47
 
48
  | Métrica | Valor |
 
38
  from transformers import AutoModelForCausalLM, AutoTokenizer
39
  tk = AutoTokenizer.from_pretrained("esraderey/chispa-20m-python")
40
  m = AutoModelForCausalLM.from_pretrained("esraderey/chispa-20m-python")
41
+ eos, pad = tk.convert_tokens_to_ids("<|endoftext|>"), tk.convert_tokens_to_ids("<pad>")
42
+ # FIM en formato PSM: el modelo rellena el hueco entre prefijo y sufijo
43
+ prompt = "<fim_prefix>def read_lines(path):\n with open(path) as f:\n <fim_suffix>\n<fim_middle>"
44
  ids = tk(prompt, return_tensors="pt").input_ids
45
+ out = m.generate(ids, max_new_tokens=16, do_sample=False, eos_token_id=eos, pad_token_id=pad)
46
+ linea = tk.decode(out[0][ids.shape[1]:], skip_special_tokens=True).split("\n")[0]
47
+ print(linea.lstrip()) # -> return f.readlines()
48
  ```
49
 
50
+ Si el prefijo termina justo después de la sangría, el modelo tiende a empezar con espacios de más: recorta el inicio
51
+ de la línea (`lstrip`) o prohíbe en el primer paso las piezas que empiezan por espacio, que es lo que se hizo en los
52
+ experimentos.
53
+
54
  ## Evaluación (repositorios retenidos, 20,000 cursores dentro de cuerpos de función)
55
 
56
  | Métrica | Valor |