transformers safetensors llama text-generation translation conversational en es dataset:Iker/InstructTranslation-EN-ES base_model:Unbabel/TowerInstruct-7B-v0.2 base_model:finetune:Unbabel/TowerInstruct-7B-v0.2 license:apache-2.0 autotrain_compatible text-generation-inference endpoints_compatible region:us
---
base_model: Unbabel/TowerInstruct-7B-v0.2
datasets:
- Iker/InstructTranslation-EN-ES
language:
- en
- es
library_name: transformers
license: apache-2.0
pipeline_tag: text-generation
tags:
- translation
---

This is a [TowerInstruct-7B](https://huggingface.co/Unbabel/TowerInstruct-7B-v0.2) model fine-tuned for translating instructions datasets from English into Spanish. This model has GPT4 translation quality, but you can run it on your own machine for free 🎉

The model has been finetuned using ~1.500 prompts and answers from [teknium/OpenHermes-2.5](teknium/OpenHermes-2.5) translated to Spanish using GPT-4-0125-preview. The dataset is available here: https://huggingface.co/datasets/Iker/InstructTranslation-EN-ES/

This model was finetuned using [axolotl](https://github.com/OpenAccess-AI-Collective/axolotl), the training config is available here: https://huggingface.co/Iker/TowerInstruct-7B-v0.2-EN2ES/blob/main/Tower7B.yml


# Demo

```python
import torch
from transformers import pipeline

og = pipeline("text-generation", model="Unbabel/TowerInstruct-13B-v0.1", torch_dtype=torch.bfloat16, device_map=0)
fn7 = pipeline("text-generation", model="Iker/TowerInstruct-7B-v0.2-EN2ES", torch_dtype=torch.bfloat16, device_map=1)
fn = pipeline("text-generation", model="Iker/TowerInstruct-13B-v0.1-EN2ES", torch_dtype=torch.bfloat16, device_map=2)


msg = """
Let's use Bayes' theorem again to solve this problem:\n\nLet A represent the event that the man actually has the ability to predict dice rolls with 90% accuracy, and C represent the event of predicting correctly on the first attempt.\n\nWe want to find P(A|C), the probability that the man actually has the ability given that he predicted correctly on his first attempt.\n\nBayes' theorem states that P(A|C) = P(C|A) * P(A) / P(C)\n\nFirst, let's find P(C|A): the probability of predicting correctly on the first attempt if the man actually has the ability. Since he claims 90% accuracy, this probability is 0.9.\n\nNext, let's find P(A): the probability that someone actually has the ability to predict dice rolls with 90% accuracy. We are told this is 1%, so P(A) = 0.01.\n\nNow we need to find P(C): the overall probability of predicting correctly on the first attempt. This can be calculated as the sum of probabilities for each case: P(C) = P(C|A) * P(A) + P(C|¬A) * P(¬A), where ¬A represents not having the ability and P(¬A) = 1 - P(A) = 0.99.\n\nTo find P(C|¬A), the probability of predicting correctly on the first attempt without the ability, we use the fact that there's a 1/6 chance of guessing correctly by random chance: P(C|¬A) = 1/6.\n\nSo, P(C) = (0.9)*(0.01) + (1/6)*(0.99) = 0.009 + 0.165 = 0.174.\n\nFinally, we can calculate P(A|C) using Bayes' theorem:\n\nP(A|C) = P(C|A) * P(A) / P(C) = (0.9)*(0.01) / (0.174) ≈ 0.0517.\n\nTherefore, the probability that the man actually has the ability to predict dice rolls with 90% accuracy is approximately 5.17%.
""".strip()

messages = [
    {"role": "user", 
     "content": f"Translate the following text from English into Spanish.\n{msg}\nSpanish:"},
]

prompt = og.tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
outputs = og(prompt, max_new_tokens=1024, do_sample=False)
print(outputs[0]["generated_text"])

prompt = fn7.tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
outputs = fn7(prompt, max_new_tokens=1024, do_sample=False)
print(outputs[0]["generated_text"])

prompt = fn.tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
outputs = fn(prompt, max_new_tokens=1024, do_sample=False)
print(outputs[0]["generated_text"])
```

### Unbabel/TowerInstruct-13B-v0.1
This model fails with very large inputs, the answer is in Russian instead of Spanish 🥴 
```
 Воспроизвем теорему Байеса для решения этой задачи:

Предположим, что A означает событие, когда человек действительно обладает способностью предсказывать результаты броска кубика с точностью 90%, а C означает событие правильного предсказания на первой попытке.

Мы хотим найти P(A|C), вероятность того, что у человека действительно есть способность, если он правильно предсказал на первой попытке.

Теорема Байеса утверждает, что P(A|C) = P(C|A) * P(A) / P(C)

Сначала определим P(C|A): вероятность правильного предсказания на первой попытке, если у человека действительно есть способность. Поскольку он утверждает, что его точность составляет 90%, эта вероятность равна 0,9.

Далее определим P(A): вероятность того, что у кого-то действительно есть способность предсказывать результаты броска кубика с точностью 90%. Нам сказано, что она составляет 1%, поэтому P(A) = 0,01.

Теперь нам нужно найти P(C): общую вероятность правильного предсказания на первой попытке. Это можно рассчитать как сумму вероятностей для каждого случая: P(C) = P(C|A) * P(A) + P(C|¬A) * P(¬A), где ¬A означает отсутствие способности, и P(¬A) = 1 - P(A) = 0,99.

Чтобы найти P(C|¬A), вероятность правильного предсказания на первой попытке без способности, мы используем тот факт, что существует 1/6 шанс сделать правильный выбор случайно: P(C|¬A) = 1/6.

Таким образом, P(C) = (0,9)*(0,01) / (0,174) ≈ 0,009 + 0,165 = 0,174.

Наконец, мы можем рассчитать P(A|C) с помощью теоремы Байеса:

P(A|C) = P(C|A) * P(A) / P(C) = (0,9)*(0,01) / (0,174) ≈ 0,0517.

Таким образом, вероятность того, что у человека действительно есть способность предсказывать результаты броска кубика с точностью 90%, составляет примерно 5,17%.
```

### Iker/TowerInstruct-7B-v0.2-EN2ES
```
Vamos a usar de nuevo el teorema de Bayes para resolver este problema:

A representa el evento de que el hombre realmente tenga la capacidad de predecir lanzamientos de dados con un 90% de precisión, y C representa el evento de predecir correctamente en el primer intento.

Queremos encontrar P(A|C), la probabilidad de que el hombre realmente tenga la capacidad dado que predecía correctamente en su primer intento.

El teorema de Bayes establece que P(A|C) = P(C|A) * P(A) / P(C)

Primero, vamos a encontrar P(C|A): la probabilidad de predecir correctamente en el primer intento si el hombre realmente tiene la capacidad. Dado que afirma un 90% de precisión, esta probabilidad es 0.9.

A continuación, vamos a encontrar P(A): la probabilidad de que alguien realmente tenga la capacidad de predecir lanzamientos de dados con un 90% de precisión. Nos dicen que esto es del 1%, así que P(A) = 0.01.

Ahora necesitamos encontrar P(C): la probabilidad total de predecir correctamente en el primer intento. Esto se puede calcular como la suma de probabilidades para cada caso: P(C) = P(C|A) * P(A) + P(C|¬A) * P(¬A), donde ¬A representa no tener la capacidad y P(¬A) = 1 - P(A) = 0.99.

Para encontrar P(C|¬A), la probabilidad de predecir correctamente en el primer intento sin la capacidad, usamos el hecho de que hay una probabilidad del 1/6 de adivinar correctamente por azar: P(C|¬A) = 1/6.

Así, P(C) = (0.9)*(0.01) + (1/6)*(0.99) = 0.009 + 0.165 = 0.174.

Finalmente, podemos calcular P(A|C) usando el teorema de Bayes:

P(A|C) = P(C|A) * P(A) / P(C) = (0.9)*(0.01) / (0.174) ≈ 0.0517.

Por lo tanto, la probabilidad de que el hombre realmente tenga la capacidad de predecir lanzamientos de dados con un 90% de precisión es aproximadamente del 5.17%.
```
### Iker/TowerInstruct-13B-v0.1-EN2ES
```
Vamos a usar de nuevo el teorema de Bayes para resolver este problema:

 Sea A el evento de que el hombre realmente tenga la capacidad de predecir lanzamientos de dados con un 90% de precisión, y C el evento de predecir correctamente en el primer intento.

 Queremos encontrar P(A|C), la probabilidad de que el hombre realmente tenga la capacidad dada que predijo correctamente en su primer intento.

 El teorema de Bayes establece que P(A|C) = P(C|A) * P(A) / P(C)

 Primero, vamos a encontrar P(C|A): la probabilidad de predecir correctamente en el primer intento si el hombre realmente tiene la capacidad. Dado que afirma un 90% de precisión, esta probabilidad es 0.9.

 A continuación, vamos a encontrar P(A): la probabilidad de que alguien realmente tenga la capacidad de predecir lanzamientos de dados con un 90% de precisión. Se nos dice que este es 1%, así que P(A) = 0.01.

 Ahora necesitamos encontrar P(C): la probabilidad general de predecir correctamente en el primer intento. Esto puede calcularse como la suma de probabilidades para cada caso: P(C) = P(C|A) * P(A) + P(C|¬A) * P(¬A), donde ¬A representa no tener la capacidad y P(¬A) = 1 - P(A) = 0.99.

 Para encontrar P(C|¬A), la probabilidad de predecir correctamente en el primer intento sin la capacidad, utilizamos el hecho de que hay una probabilidad de 1/6 de adivinar correctamente por casualidad: P(C|¬A) = 1/6.

 Así que, P(C) = (0.9)*(0.01) + (1/6)*(0.99) = 0.009 + 0.165 = 0.174.

 Finalmente, podemos calcular P(A|C) usando el teorema de Bayes:

 P(A|C) = P(C|A) * P(A) / P(C) = (0.9)*(0.01) / (0.174) ≈ 0.0517.

 Por lo tanto, la probabilidad de que el hombre realmente tenga la capacidad de predecir lanzamientos de dados con un 90% de precisión es aproximadamente 5.17%.
```
