transformers safetensors nanogpt-j text-generation custom_code autotrain_compatible region:us
---
library_name: transformers
tags: []
---

# SabiYarn

Test the whole generation capabilities here: https://huggingface.co/spaces/BeardedMonster/SabiYarn_125M

Pretrained model on Nigerian languages including English using a causal language modeling (CLM) Multi-task objective. 

## Model Details

### Model Description

SabiYarn-125M is the first of a series of transformer models (adopted from nanogpt and inspired by GPT-J's architecture) pretrained on a large corpus of Nigerian language data in a self-supervised fashion. This means it was pretrained on the raw texts only, 
with no humans labelling them in any way (which is why it can use lots of publicly available data) with an automatic process to generate inputs and labels from those texts. More precisely, it was trained to guess the next word in sentences.

More precisely, inputs are sequences of continuous text of a certain length and the targets are the same sequence, shifted one token (word or piece of word) to the right. 
The model uses internally a mask-mechanism to make sure the predictions for the token i only uses the inputs from 1 to i but not the future tokens. It also makes sure attention
is not calculated across documents.

This way, the model learns an inner representation of the languages that can then be used to extract features useful for downstream tasks. The model is best at what 
it was pretrained for however, which is generating coherent texts.

This is the smallest version, with 125M parameters. 

- **Developed by:** Aletheia.ai Research Lab
- **Funded by [optional]:** Personal
- **Shared by [optional]:** Jeffreypaul
- **Model type:** GPTJX (Adopted from NanoGPT)
- **Language(s) (NLP):** Majorly English, Yoruba, Hausa, Igbo, Pidgin and some others: Fulah/Fulfulde, Efik, Urhobo.


### Model Sources [optional]

- **Demo:** https://huggingface.co/spaces/BeardedMonster/SabiYarn_125M

## Uses

You can use the raw model for text generation or fine-tune it to a downstream task.

## Bias, Risks, and Limitations

The training data used for this model is mostly an aggregation of data available on huggingface for nigerian languages. We know it contains a lot of unfiltered content from the internet, which is far from neutral. 

Because large-scale language models of this size do not distinguish fact from fiction, we don’t support use-cases that require the generated text to be true.

Additionally, language models often reflect the biases inherent to the systems they were trained on, so we do not recommend that they be deployed into systems that interact with humans > unless the deployers first carry out a study of biases relevant to the intended use-case. 


### Recommendations

Users (both direct and downstream) should be made aware of the risks, biases and limitations of the model. More information needed for further recommendations.


## How to Get Started with the Model

Use the code below to get started with the model.

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

generation_config = GenerationConfig(
    max_length=100,               # Adjust this based on your translation requirements
    max_new_tokens=50,            # Ensure sufficient tokens for your translations
    num_beams=5,                  # Moderate number of beams for a balance between speed and quality
    do_sample=False,              # Disable sampling to make output deterministic
    temperature=1.0,              # Neutral temperature since sampling is off
    top_k=0,                      # Disable top-k sampling (since sampling is off)
    top_p=0,                      # Disable top-p (nucleus) sampling (since sampling is off)
    repetition_penalty=4.0,       # Neutral repetition penalty for translation
    length_penalty=3.0,           # No penalty for sequence length; modify if your translations tend to be too short/long
    early_stopping=True           # Stop early when all beams finish to speed up generation
)

repo_name = "BeardedMonster/SabiYarn-125M-topic"
tokenizer_name= "BeardedMonster/SabiYarn-125M"
model = AutoModelForCausalLM.from_pretrained(repo_name, trust_remote_code=True)
tokenizer= AutoTokenizer.from_pretrained(tokenizer_name, trust_remote_code=True)

Use the following tags for the following downstream tasks:
  ```
- Topic classification
  ```python
  <classify> ...... <topic>
  ```


You should typically put user's input between these 2 tags. Currently, model also doesnt perform very well on NER due to the scarce data on this.

### Model Architecture and Objective
Architecture is very similar to GPT-J


