--- tags: - text-generation-inference - transformers - sft - chocolatine license: mit language: - fr datasets: - jpacifico/french-orca-pairs-culinary-9865 - jpacifico/finetome_french_cook_definitions_v2 --- # Description model Chocolatine-3B version specialized in French culinary language, fine-tuning of [microsoft/Phi-3.5-mini-instruct](https://huggingface.co/microsoft/Phi-3.5-mini-instruct). This model is based on 283 specific terms and definitions of French cuisine. # Fine Tuning For this version of the model I experimented a training method with a double fine-tuning, SFT then DPO. I generated two datasets exclusively for this model, with GPT-4o deployed on Azure OpenAI. The challenge was to achieve a consistent alignment between the two fine-tuning methods. SFT to teach the terms and DPO to reinforce the understanding achieved during the first learning. Fine tuning done efficiently with Unsloth, with which I saved processing time on a single T4 GPU (AzureML compute instance). # Usage The recommended usage is by loading the low-rank adapter using unsloth: ```python from unsloth import FastLanguageModel from transformers import TextStreamer import torch model_name = "jpacifico/Chocolatine-Cook-3B-combined-SFT-DPO-v0.1" model, tokenizer = FastLanguageModel.from_pretrained( model_name, max_seq_length=2048, dtype=torch.float16 if torch.cuda.is_available() else torch.float32, load_in_4bit=False ) FastLanguageModel.for_inference(model) model.eval() def generate_response(user_question: str): messages = [ {"role": "system", "content": "Tu es un assistant IA spécialisé dans le langage culinaire français. Une question te sera posée. Tu dois générer une réponse précise et concise."}, {"role": "user", "content": "En cuisine "+user_question}, ] inputs = tokenizer.apply_chat_template( messages, tokenize=True, add_generation_prompt=True, return_tensors="pt", ).to("cuda") attention_mask = (inputs != tokenizer.pad_token_id).long() text_streamer = TextStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True) with torch.no_grad(): _ = model.generate( input_ids=inputs, attention_mask=attention_mask, max_new_tokens=128, use_cache=True, streamer=text_streamer, do_sample=False, temperature=0.7, ) ``` ### Limitations The Chocolatine model series is a quick demonstration that a base model can be easily fine-tuned to achieve compelling performance. It does not have any moderation mechanism. - **Developed by:** Jonathan Pacifico, 2024 - **License:** MIT - **Finetuned from model :** microsoft/Phi-3.5-mini-instruct