transformers tensorboard safetensors jamba text-generation axolotl custom_code fr base_model:ai21labs/Jamba-v0.1 base_model:quantized:ai21labs/Jamba-v0.1 license:apache-2.0 autotrain_compatible endpoints_compatible 4-bit bitsandbytes region:us
---
base_model: ai21labs/Jamba-v0.1
language:
- fr
license: apache-2.0
tags:
- axolotl
---

<img src="https://huggingface.co/Pclanglais/Jambert/resolve/main/jambert_logo.jpg" alt="image" width="300" height="auto">

***Jambert*** is an experimental fine-tuned model based on Jamba and specialized RAG tasks and document synthesis.

Given a question and a list of references, Jambert will write a summarized version.

As an initial test, Jambert is for now trained on a 4,096 token context window but with the expectations of doing later iteration on significantly longer texts, thanks to the Mamba architecture.

## Training.
Jambert was trained with Axolotl on a set of administrative documents and associated synthesis in French and English. It could work out as well in other languages, as this task has been proven to transfer easily accross languages.

[<img src="https://raw.githubusercontent.com/OpenAccess-AI-Collective/axolotl/main/image/axolotl-badge-web.png" alt="Built with Axolotl" width="200" height="32"/>](https://github.com/OpenAccess-AI-Collective/axolotl)
<details><summary>See axolotl config</summary>

axolotl version: `0.4.0`
```yaml

base_model: jamba
trust_remote_code: true

load_in_8bit: false
load_in_4bit: true
strict: false

datasets:
  - path: rag_dataset.json
    ds_type: json
    type: sharegpt
    conversation: chatml
dataset_prepared_path:
val_set_size: 0.01
output_dir: ./out

sequence_len: 6000
sample_packing: true
pad_to_sequence_len: false
eval_sample_packing: true

use_wandb: false

adapter: qlora
lora_r: 8
lora_alpha: 16
lora_dropout: 0.05
lora_target_linear: true

low_cpu_mem_usage: true
gradient_accumulation_steps: 4
micro_batch_size: 1
num_epochs: 2
optimizer: paged_adamw_8bit
lr_scheduler: cosine
learning_rate: 0.0002

train_on_inputs: false
group_by_length: false
bf16: auto
fp16:
tf32: false

gradient_checkpointing: true
gradient_checkpointing_kwargs:
  use_reentrant: false
early_stopping_patience:
resume_from_checkpoint:
local_rank:
logging_steps: 1
xformers_attention:
flash_attention: true

warmup_steps: 10
evals_per_epoch: 2
saves_per_epoch: 2
debug:
weight_decay: 0.0
special_tokens:

```

</details><br>

## Inference.
The repository provides both a 4-bit version that should run easily on any 80b or even 40b GPU, as well as the original adapter to be used in combination with the base model.

Inference was tested with the following script:

```python
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig

# Load model in 4-bit precision
quantization_config = BitsAndBytesConfig(
    load_in_4bit=True,
    llm_int8_skip_modules=["mamba"]
)
model = AutoModelForCausalLM.from_pretrained(
    "merged_model",
    trust_remote_code=True,
    torch_dtype=torch.bfloat16,
    attn_implementation="flash_attention_2",
    quantization_config=quantization_config
)
tokenizer = AutoTokenizer.from_pretrained("merged_model")

# Tokenize input
system_prompt = """<|im_start|>system\nPlease answer the question using the references provided as inputs. The references should be quoted like this: : written text<ref text="[relevant citation in the reference]">["identifier of the reference"]</ref><|im_end|>\n"""
query = """<|im_start|>user\nQuels sont les dispositifs de déductions fiscales disponibles pour les entreprises implantées dans certaines zones ?\nReferences :\n85da7a1b56c0d9de_0 : Exonérations en zones de restructuration de la défense (ZRD) Une entreprise installée dans une zone de restructuration de la défense (ZRD) peut bénéficier de plusieurs exonérations fiscales et sociales. Vous devez consulter la liste officielle des ZRD pour savoir si votre entreprise se trouve dans un territoire concerné. Voici une liste de différents cas possibles:\n- Impôt sur le revenu (IR) et impôt sur les sociétés (IS)\n- Cotisation foncière des entreprises (CFE)\n- Taxe foncière sur les propriétés bâties\n- Cotisations patronales \n\n5a151bc8aa551ceb_0 : Exonérations en zones de restructuration de la défense (ZRD) Impôt sur le revenu (IR) et impôt sur les sociétés (IS). Démarche. L’établissement doit fournir la preuve qu'il exerce une activité économique réelle dans la zone. Il doit pour cela fournir des éléments d'exploitation. Par exemple : loyers, salaires, factures d'achats de produits ou la preuve de stocks de marchandises en lien avec l'activité. Ces documents doivent être transmis à l'administration fiscale lors de la déclaration annuelle de résultats. Vous devez joindre à votre déclaration de résultats une déclaration spéciale et remplir les éléments nécessaires qui ouvrent un droit à cette exonération fiscale. \n\nff7af464559274d7_0 : Exonérations d'impôts en zone de revitalisation rurale (ZRR) Exonération de l'impôt sur le revenu ou de l'impôt sur les sociétés. Entreprises concernées. L'exonération d'impôt sur le revenu ou d'impôt sur les sociétés est accordée à une entreprise créée ou reprise avant le 31 décembre 2023 et qui respecte les 5 conditions suivantes :\n- Exercer une activité industrielle, commerciale, artisanale ou libérale\n- Avoir son siège social et ses activités situés dans une ZRR\n- Être sous le régime réel d'imposition\n- Avoir moins de 11 salariés en CDI ou en CDD de 6 mois minimum\n- Avoir moins de 50 % de son capital détenu par d'autres sociétés\n(Rappel: Les micro-entrepreneurs sont exclus de cette exonération. Ils ne sont pas sous le régime réel d'imposition mais sous le régime fiscal de la micro-entreprise .) Si l'entreprise réalise plus de 25 % de son CA (chiffre d'affaires) en dehors de la ZRR, la part qui dépasse ces 25 % est imposée. (Exemple: Une société de transport routier de marchandises peut bénéficier du dispositif d'exonération d'impôt si le lieu de stationnement habituel des véhicules, le lieu d'implantation des installations d'entretien et celui de la direction effective sont situés en ZRR. Il faut également tenir du compte du prorata de chiffre d’affaires réalisé dans la ZRR. Pour le calcul du chiffre d’affaires effectivement réalisé en ZRR , il faut considérer le lieu de réalisation de la prestation de service. Pour des activités de transport de marchandises, le lieu de réalisation de la prestation de service est localisé en ZRR si le lieu de chargement et /ou de livraison est situé en ZRR.) \n\nff532e5befb78a9e_0 : Exonérations d'impôts en zone de revitalisation rurale (ZRR) Une entreprise située ou qui souhaite s'implanter dans une zone de revitalisation rurale (ZRR) bénéficie d'exonérations fiscales sous certaines conditions. Ces critères sont liés notamment à l'effectif de ses salariés et à la nature de l'activité exercée. Ce dispositif est prolongé jusqu'au 31 décembre 2023. Les demandes d'exonération peuvent être faites jusqu'à cette date. Pour savoir si votre entreprise est située dans une ZRR, vous pouvez consulter la carte des zones concernées. Voici une liste de différents cas possibles:\n- Exonération de l'impôt sur le revenu ou de l'impôt sur les sociétés\n- Cotisation foncière des entreprises (CFE)\n- Taxe foncière sur les propriétés bâties (TFPB)\n- Taxe d'habitation sur les résidences secondaires \n\n4817ecdfffe51a7d_0 : Exonérations sur les bénéfices en zone franche urbaine-territoire entrepreneur (ZFU-TE) Une entreprise qui s'implante et embauche une main-d'œuvre locale dans une zone franche urbaine - territoire entrepreneurs (ZFU-TE) , peut bénéficier d'exonérations fiscales sous certaines conditions. Ce dispositif est valable jusqu'au 31 décembre 2023. Les règles diffèrent selon la date d'implantation de l'entreprise : à partir de 2016 ou en 2015 ou avant 2015. Voici une liste de différents cas possibles:\n- Votre entreprise est-elle située en ZFU ? - Quelle entreprise est concernée par l'exonération sur les bénéfices ? - Conditions liées à l'embauche de salariés\n- Montant et durée de l'exonération\n- Démarches\n- Quelle entreprise est concernée ?<|im_end|>\n<|im_start|> assistant\n"""

prompt = system_prompt + query

input_ids = tokenizer(
    prompt,
    return_tensors='pt'
).to(model.device)["input_ids"]

# Generate answer
outputs = model.generate(input_ids, max_new_tokens=1000, do_sample = True, temperature = 0.7, repetition_penalty=1.2)

outputs = tokenizer.batch_decode(outputs)[0]

# Print output
print(outputs)
```

