safetensors translation en vi license:apache-2.0 region:us
---
license: apache-2.0
language:
- en
- vi
pipeline_tag: translation
---

Finetune mT5-large with LoRA for English-Vietnamese translation

# How to use it
```python
import torch
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM

base_model = AutoModelForSeq2SeqLM.from_pretrained("google/mt5-large")
tokenizer = AutoTokenizer.from_pretrained("google/mt5-large")

# load Peft model
peft_model = PeftModel.from_pretrained(base_model, "adapter")
peft_model.save_pretrained("inference")

del peft_model, base_model

# reload with mixed precision
device = 'cuda' if torch.cuda.is_available() else 'cpu'
model = AutoModelForSeq2SeqLM.from_pretrained(
  "inference", torch_dtype=torch.float16
).to(device)  
```

# Inference
```python
def preprocess(input_text:str = None, prefix:str = 'vi'):
    return prefix + input_text + "<END>"

def postprocess(output_text):
    return output_text[4:].split("<END>")[0]

def translate(text:str = None, prefix:str = 'vi'):
  text = preprocess(text, prefix)
  tokenized = tokenizer(
      text,
      padding=True, truncation=True,
      return_tensors="pt"
  ).to(model.device)

  with torch.no_grad():
    outputs = model(**tokenized, beam_search=4, use_cache=True)

  output = tokenizer.decode(outputs[0], skip_special_tokens=True)

  return postprocess(output)
```

## Translate sentences
For translate English to Vietnamese
```
en2vi = 'VnExpress provides latest Vietnam news, regional, business, financial, industries, travel news and views to policy makers'
prefix = 'en: '

result = translate(text = en2vi, prefix = prefix)
# VnExpress cung cấp tin tức mới nhất về Việt Nam, khu vực, kinh doanh, tài chính, công nghiệp, tin tức du lịch và quan điểm cho các nhà hoạch định chính sách
```

For translate Vietnamese to English
```
vi2en = 'VnExpress là một tờ báo tại Việt Nam được thành lập bởi tập đoàn FPT, ra mắt vào ngày 26 tháng 2 năm 2001'
prefix = 'vi: '
result = translate(text = vi2en, prefix = prefix)
# VnExpress is a newspaper in Vietnam founded by FPT Corporation, launched on February 26, 2001.
```

# Hyperparameters Training
```
- batch_size = 2
- gradient_acc = 14
- total_steps = 100k
- warm_up = 0.1
- max_len = 512
- learning_rate = 3e-5
- scheduler = cosine
- deepspeed = v1
- gpus = 2x3090
- dataset_train = presencesw/hash_v3
- lora_target = ['q', 'wi_1', 'k', 'wi_0', 'v', 'wo', 'o', 'lm_head']
- trainable parameter: 0.38228893842642636%
- LORA_R=8
- LORA_ALPHA=8
- LORA_DROPOUT = 0.1

```
- Total time: ~168 hours
- Total dataset: ~5.6M samples

- Curve loss

![image/png](https://cdn-uploads.huggingface.co/production/uploads/622eb5d2165ba2c1bcbc76f1/PCui5aohDM2eyDI4OwTyk.png)
