luciole_logo.png

Model Card for Luciole-1B-Instruct-1.1

Model Description

Luciole-1B-Instruct-1.1 is a fine-tuned and aligned version of Luciole-1B-Base, an open-source, multilingual causal language model created by OpenLLM-France. Luciole-1B-Instruct-1.1 was developed by LINAGORA and the OpenLLM-France consortium as a part of the OpenLLM France project, funded by BPI France through the France 2030 program.

Training of Luciole-1B-Instruct-1.1 was conducted on Jean Zay in three phases: (i) a supervised fine-tuning (SFT) phase on instruction data with thinking traces, (ii) an SFT phase on instruction data without thinking traces, and (iii) a final preference alignment phase using Direct Preference Optimization (DPO). The training data covers topics in math, science, coding, general chat, RAG and translation.

Note that Luciole-1B-Instruct-1.1 is only the first iteration of post-trained models based on Luciole-1B-Base. Development of the Luciole models is an active, ongoing project and further iterations, including models trained on higher proportions of French data, are planned. In the spirit of open-source, we share the model weights and training recipes to facilitate research and to provide open source building blocks for other training projects.

If you are interested in contributing to the Luciole project, contact us at contact@openllm-france.fr.

Bias, Risks, and Limitations

Luciole-1B-Instruct-1.1 is the result of a first phase of fine-tuning and alignment to human preferences. Efforts to improve the model are active and ongoing and the model should be thoroughly tested for target use cases before being incorporated in industrial pipelines. Training has mostly focused on instrution following, and additional training would be necessary for tasks specifically focused on code generation or mathematical problem solving. It is also susceptible to hallucinations; that is, producing false answers that result from its training on massive amounts of diverse text.

Luciole-1B-Instruct-1.1 was post-trained almost entirely on English data (in contrast to its base model, OpenLLM-France/Luciole-1B-Base, which was trained on roughly 30% French data). Future post-training phases will focus specifically on increasing the proportion of French data and testing the impact that this has on model performance.

Due to its size, Luciole-1B-Instruct-1.1 is limited in the information that it can memorize; its ability to produce correct answers could be improved by implementing the model in a retrieval augmented generation pipeline.

Finally, Luciole-1B-Instruct-1.1 was trained on sequences of 16,384 tokens (in contrast to its base model, whose context window was extended to 131,000 tokens).

Recommendations

  • Further train Luciole-1B-Instruct-1.1 for specific use cases.
  • Integrate the model in a RAG pipeline to augment its knowledge base.
  • Extend training with longer sequences to increase context length.

Training details

Training data

The post-training data and dataset description will be published soon.

Instruction template

Luciole-1B-Instruct-1.1 was trained on the chat template inspired from Qwen3-1.7B. In our chat template, we also use a default system prompt.

An example:

from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("OpenLLM-France/Luciole-1B-Instruct-1.1")
chat = [
  {
    "content": "Who was Molière?",
    "role": "user"
  },
  {
    "content": "Molière was a 17th-century French playwright, actor, and comedian.",
    "role": "assistant"
  },
  {
    "content": "What are his best-known works?",
    "role": "user"
  }
]
print(tokenizer.apply_chat_template(chat, tokenize=False, add_generation_prompt=True))

gives the output

<|im_start|>system
You are a helpful AI assistant named Luciole, trained by LINAGORA and OpenLLM France.<|im_end|>
<|im_start|>user
Who was Molière?<|im_end|>
<|im_start|>assistant
Molière was a 17th-century French playwright, actor, and comedian.<|im_end|>
<|im_start|>user
What are his best-known works?<|im_end|>
<|im_start|>assistant

Training procedure

Luciole-1B-Instruct-1.1 was trained in three phases. The model was first finetuned on thinking data, and then on data without thinking traces. The resulting instruct model was aligned during a final DPO finetuning phase.

SFT with thinking SFT without thinking DPO without thinking
Num training samples 2.6M 2.1M 284K
Num epochs 4 4 1
Max learning rate 2.0e-5 2.0e-5 1.0e-6
Min learning rate 2.0e-6 2.0e-6 0
LR scheduler cosine cosine linear
Max sequence length 16384 16384 16384
Batch size 2048 2048 128
DPO β n/a n/a 5

Links to the interim models: SFT with thinking, SFT without thinking

Evaluation

Overall, Luciole-1B-Instruct-1.1 performs comparably with other open source instruct models of the same size. While it currently struggles with math word problem solving, it approaches Qwen3 in instruction following. It is notable that Luciole-1B-Instruct-1.1 outperforms most other open source multilingual models on French language instruction despite being finetuned on mostly English language data. This is likely the effect of seeing a larger proportion of French data during pretraining.

Testing the model

Test with ollama

Note: for best performance, please use the GGUF files released officially by OpenLLM.

  • Download and install Ollama
  • Download the GGUF model
  • Copy the Modelfile, adpating if necessary the path to the GGUF file (line starting with FROM).
  • Run in a shell:
    • ollama create -f Modelfile Luciole
    • ollama run Luciole
  • Once ">>>" appears, type your prompt(s) and press Enter.
  • Optionally, restart a conversation by typing "/clear"
  • End the session by typing "/bye".

Useful for debug:

Test with vLLM

1. Run vLLM Docker Container

Use the following command to deploy the model, replacing INSERT_YOUR_HF_TOKEN with your Hugging Face Hub token.

docker run --runtime nvidia --gpus=all \
    --env "HUGGING_FACE_HUB_TOKEN=INSERT_YOUR_HF_TOKEN" \
    -p 8000:8000 \
    --ipc=host \
    vllm/vllm-openai:latest \
    --model OpenLLM-France/Luciole-1B-Instruct-1.1

2. Test using OpenAI Client in Python

To test the deployed model, use the OpenAI Python client as follows:

from openai import OpenAI

# Initialize the client
client = OpenAI(base_url='http://localhost:8000/v1', api_key='empty')

# Define the input content
content = "Hello Luciole"

# Generate a response
chat_response = client.chat.completions.create(
    model="OpenLLM-France/Luciole-1B-Instruct-1.1",
    messages=[
        {"role": "user", "content": content}
    ],
)
print(chat_response.choices[0].message.content)

Citation

✍ Paper coming soon!

Acknowledgements

We gratefully acknowledge BPI France for funding the OpenLLM France project under the call "Communs numériques pour l’intelligence artificielle générative" ("Digital commons for generative artificial intelligence") as a part of the France 2030 program.

Training of Luciole-1B-Instruct-1.1 was made possible by computing AI and storage resources by GENCI at IDRIS thanks to the project A0181016189 on the supercomputer Jean Zay’s H100 partition. We gratefully acknowledge their support.

Luciole-1B-Instruct-1.1 was created by members of LINAGORA and the OpenLLM-France community, including in alphabetical order:

Akshay Chaturvedi (LINAGORA)
Liam Duignan (CEA List)
Olivier Ferret (CEA List)
Olivier Gouvert (LINAGORA)
Émile Hazard (Opsci)
Julie Hunter (LINAGORA)
Jean-Pierre Lorré (LINAGORA)
Jérôme Louradour (LINAGORA)
Michel-Marie Maudet (LINAGORA)
Kate Thompson (LINAGORA)
Matteo Van Ypersele de Strihou (LINAGORA)

Particular thanks to the following OpenLLM France members for their valuable input: Clément Bénesse (Opsci), Christophe Cerisara (LORIA) and Gabriel Lauzzana (LORIA).

We thank the support teams from IDRIS and NVIDIA for technical guidance throughout the project.

We would also like to thank members of the Gaperon and Salamandra projects for sharing their insights with us. We also acknowledge the numerous open source actors whose resources have guided us throughout the training process, with particular thanks to Nvidia, HuggingFace and Allen AI.

Finally, we thank the entire OpenLLM-France community, whose members have helped in diverse ways.

Contact

contact@openllm-france.fr

Downloads last month
351
Safetensors
Model size
1B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for OpenLLM-France/Luciole-1B-Instruct-1.1

Finetuned
(1)
this model
Quantizations
2 models

Collection including OpenLLM-France/Luciole-1B-Instruct-1.1