
# ALMA-7B model for CTranslate2

The model is quantized version of the [haoranxu/ALMA-7B](https://huggingface.co/haoranxu/ALMA-7B) with int8_float16 quantization and can be used in [CTranslate2](https://github.com/OpenNMT/CTranslate2).

**ALMA** (**A**dvanced **L**anguage **M**odel-based tr**A**nslator) is an LLM-based translation model, which adopts a new translation model paradigm: it begins with fine-tuning on monolingual data and is further optimized using high-quality parallel data. This two-step fine-tuning process ensures strong translation performance. 

- Model creator: [Haoran Xu](https://huggingface.co/haoranxu)
- Original model: [ALMA 7B](https://huggingface.co/haoranxu/ALMA-7B)


## Conversion details

The original model was converted on 2023-12 with the following command:

```
ct2-transformers-converter --model haoranxu/ALMA-7B --quantization int8_float16 --output_dir ALMA-7B-ct2-int8_float16 \
    --copy_files generation_config.json special_tokens_map.json tokenizer.model tokenizer_config.json
```


## Prompt template: ALMA

```
Translate this from English to Chinese:
English: {prompt}
Chinese:
```


## Example

This example code is obtained from [CTranslate2_transformers](https://opennmt.net/CTranslate2/guides/transformers.html#mpt). 
More detailed information about the `generate_batch` methon can be found at [CTranslate2_Generator.generate_batch](https://opennmt.net/CTranslate2/python/ctranslate2.Generator.html#ctranslate2.Generator.generate_batch).

```python
import ctranslate2
import transformers

generator = ctranslate2.Generator("avans06/ALMA-7B-ct2-int8_float16")
tokenizer = transformers.AutoTokenizer.from_pretrained("haoranxu/ALMA-7B")

text = "Who is Alan Turing?"
prompt = f"Translate this from English to Chinese:\nEnglish: {text}\nChinese:"
tokens = tokenizer.convert_ids_to_tokens(tokenizer.encode(prompt))

results = generator.generate_batch([tokens], max_length=256, sampling_temperature=0.7, sampling_topp=0.9, repetition_penalty=1.1, include_prompt_in_result=False)

output = tokenizer.decode(results[0].sequences_ids[0])
```


## The following explanations are excerpted from the [FAQ section of the author's GitHub README](https://github.com/fe1ixxu/ALMA#what-language-directions-do-alma-support).
- **What language directions do ALMA support?**  
Currently, ALMA supports 10 directions: English↔German, Englishs↔Czech, Englishs↔Icelandic, Englishs↔Chinese, Englishs↔Russian. However, it may surprise us in other directions :)


## More information

For more information about the original model, see its [GitHub repository](https://github.com/fe1ixxu/ALMA)
{"license": "mit", "tags": ["ctranslate2", "quantization", "int8", "float16", "text-generation", "ALMA", "llama"]}
transformers ctranslate2 quantization int8 float16 text-generation ALMA llama license:mit endpoints_compatible region:us