File size: 8,529 Bytes
6bf4b0a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
Quantization made by Richard Erkhov.

[Github](https://github.com/RichardErkhov)

[Discord](https://discord.gg/pvy7H8DZMG)

[Request more models](https://github.com/RichardErkhov/quant_request)


bertin-gpt-j-6B-alpaca - bnb 4bits
- Model creator: https://huggingface.co/bertin-project/
- Original model: https://huggingface.co/bertin-project/bertin-gpt-j-6B-alpaca/




Original model description:
---
license: openrail
datasets:
- bertin-project/alpaca-spanish
library_name: transformers
language:
- es
pipeline_tag: text-generation
tags:
- alpaca
- ggml
widget:
- text: >-
    A continuaci贸n hay una instrucci贸n que describe una tarea. Escribe una
    respuesta que complete adecuadamente lo que se pide.

    ### Instrucci贸n: Escribe un correo electr贸nico dando la bienvenida a un
    nuevo empleado llamado Manolo.

    ### Respuesta:
  example_title: E-mail
- text: >-
    A continuaci贸n hay una instrucci贸n que describe una tarea. Escribe una
    respuesta que complete adecuadamente lo que se pide.

    ### Instrucci贸n: Cu茅ntame algo sobre las alpacas.

    ### Respuesta:
  example_title: Alpacas
- text: >-
    A continuaci贸n hay una instrucci贸n que describe una tarea. Escribe una
    respuesta que complete adecuadamente lo que se pide.

    ### Instrucci贸n: Inventa una excusa creativa para decir que no tengo que ir
    a la fiesta.

    ### Respuesta:
  example_title: Excusa
---


# BERTIN-GPT-J-6B Alpaca

This is a [BERTIN GPT-J-6B](https://huggingface.co/bertin-project/bertin-gpt-j-6B) Spanish model fine-tuned on the [Spanish Alpaca](https://huggingface.co/datasets/bertin-project/alpaca-spanish) dataset.

## Usage

```python
from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig, pipeline

base_model = "bertin-project/bertin-gpt-j-6B-alpaca"
tokenizer = AutoTokenizer.from_pretrained(base_model)
model = AutoModelForCausalLM.from_pretrained(base_model).cuda()
```

For generation, we can either use `pipeline()` or the model's `.generate()` method. Remember that the prompt needs a **Spanish** template:

```python
# Generate responses
def generate(instruction, input=None):
    if input:
        prompt = f"""A continuaci贸n hay una instrucci贸n que describe una tarea, junto con una entrada que proporciona m谩s contexto. Escribe una respuesta que complete adecuadamente lo que se pide.

### Instrucci贸n:
{instruction}

### Entrada:
{input}

### Respuesta:"""
    else:
        prompt = f""""A continuaci贸n hay una instrucci贸n que describe una tarea. Escribe una respuesta que complete adecuadamente lo que se pide.

### Instrucci贸n:
{instruction}

### Respuesta:
"""
    inputs = tokenizer(prompt, return_tensors="pt")
    input_ids = inputs["input_ids"].cuda()
    generation_output = model.generate(
        input_ids=input_ids,
        generation_config=GenerationConfig(temperature=0.2, top_p=0.75, num_beams=4),
        return_dict_in_generate=True,
        output_scores=True,
        max_new_tokens=256
    )
    for seq in generation_output.sequences:
        output = tokenizer.decode(seq, skip_special_tokens=True)
        print(output.split("### Respuesta:")[-1].strip())

generate("Escribe un correo electr贸nico dando la bienvenida a un nuevo empleado llamado Manolo.")
# Estimado Manolo,
#
# 隆Bienvenido a tu nuevo trabajo como Representante de Servicio al Cliente en nuestra empresa! Estamos emocionados de tenerte a bordo y esperamos que tengas un gran a帽o trabajando con nosotros.
#
# En nombre de todos en esta empresa, queremos darte la bienvenida al equipo y desearte lo mejor en tus nuevas funciones.
#
# 隆Estamos ansiosos por escuchar tus historias y ayudarte a tener 茅xito en tu nuevo rol!
#
# Sinceramente,
# El equipo de Servicio al Cliente

```


## Data

The dataset is a translation to Spanish of [alpaca_data_cleaned.json](https://github.com/tloen/alpaca-lora/blob/main/alpaca_data_cleaned.json) (a clean version of the [Alpaca dataset made at Stanford](https://huggingface.co/datasets/tatsu-lab/alpaca)) using OpenAI's `gpt-3.5-turbo` model. We translated using a full-sample prompt instead of per strings, which resulted in more coherent tuples of `(instruction, input, output)` and costed around $60.0.

**This dataset cannot be used to create models that compete in any way with OpenAI.**

## Finetuning

To fine-tune the BERTIN GPT-J-6B model we used the code available on [BERTIN's fork of `mesh-transformer-jax`](https://github.com/bertin-project/mesh-transformer-jax/blob/master/prepare_dataset_alpaca.py), which provides code adapt an Alpaca dataset to finetune any GPT-J-6B model. We run finetuning for 3 epochs using sequence length of 2048 on a single TPUv3-8 for 3 hours on top of BERTIN GPT-J-6B.

## Example outputs

Stanford Alpaca:
```
Instruction: Inventa una excusa creativa para decir que no tengo que ir a la fiesta.
Response: I'm sorry, I can't make it to the party. I have to stay home and take care of my sick pet.
```

BERTIN Alpaca LoRA:
```
Instruction: Inventa una excusa creativa para decir que no tengo que ir a la fiesta.
Response: No puedo ir a la fiesta porque tengo que terminar un proyecto urgente.
```

BERTIN GPT-J-6B Alpaca:
```
Instruction: Inventa una excusa creativa para decir que no tengo que ir a la fiesta.
Response: Lo siento, pero tengo una cita inesperada a la que necesito asistir.
```


Stanford Alpaca:
```
Instruction: 驴C贸mo puedo comenzar una carrera como cient铆fico de datos? Responde con una lista de pasos a seguir.
Response: To begin a career as a data scientist, there are a few steps to take. First, you should have a bachelor's degree in a STEM-related field, such as computer science, mathematics, statistics, or engineering. You should also have experience with programming languages such as Python, R, or Java. Additionally, it is helpful to have knowledge of machine learning, data visualization, and data analytics. Finally, it is important to stay up to date with the latest trends and technologies in the field.
```

BERTIN Alpaca LoRA:
```
Instruction: 驴C贸mo puedo comenzar una carrera como cient铆fico de datos? Responde con una lista de pasos a seguir.
Response: Para comenzar una carrera como cient铆fico de datos, hay varios pasos a seguir. Primero, obtener una licenciatura en matem谩ticas, inform谩tica o ciencias de la computaci贸n. Luego, obtener una maestr铆a o doctorado en ciencias de la computaci贸n, inform谩tica o alguna otra 谩rea relacionada. Finalmente, obtener experiencia en el campo trabajando en proyectos de investigaci贸n o desarrollando aplicaciones.
```

BERTIN GPT-J-6B Alpaca:
```
Instruction: 驴C贸mo puedo comenzar una carrera como cient铆fico de datos? Responde con una lista de pasos a seguir.
Response: Comenzar una carrera como cient铆fico de datos requiere una s贸lida formaci贸n en matem谩ticas, estad铆stica e inform谩tica. Tambi茅n es importante tener experiencia en an谩lisis de datos, aprendizaje autom谩tico y visualizaci贸n de datos. Para prepararse para una carrera como cient铆fico de datos, considere tomar cursos en estad铆stica, aprendizaje autom谩tico, visualizaci贸n de datos y otros temas relevantes. Adem谩s, aseg煤rese de obtener experiencia pr谩ctica trabajando en proyectos de an谩lisis de datos o tomando roles de aprendiz de cient铆fico de datos.
```

You can test it using the eval notebook [here](https://colab.research.google.com/github/22-hours/cabrita/blob/main/notebooks/cabrita-lora.ipynb).

## References

- [LLaMA](https://ai.facebook.com/blog/large-language-model-llama-meta-ai/)
- [Stanford Alpaca](https://github.com/tatsu-lab/stanford_alpaca)
- [BERTIN Alpaca](https://huggingface.co/datasets/bertin-project/alpaca-spanish)
- [ChatGPT](https://openai.com/blog/chatgpt)
- [Hugging Face](https://huggingface.co/)
 
## Hardware Requirements

For training we have used a Google Cloud TPUv3-8 VM. For eval, you can use a T4.
# [Open LLM Leaderboard Evaluation Results](https://huggingface.co/spaces/HuggingFaceH4/open_llm_leaderboard)
Detailed results can be found [here](https://huggingface.co/datasets/open-llm-leaderboard/details_bertin-project__bertin-gpt-j-6B-alpaca)

| Metric                | Value                     |
|-----------------------|---------------------------|
| Avg.                  | 32.11   |
| ARC (25-shot)         | 36.01          |
| HellaSwag (10-shot)   | 54.3    |
| MMLU (5-shot)         | 27.66         |
| TruthfulQA (0-shot)   | 43.38   |
| Winogrande (5-shot)   | 55.8   |
| GSM8K (5-shot)        | 0.0        |
| DROP (3-shot)         | 7.59         |