-
Notifications
You must be signed in to change notification settings - Fork 550
fix dataset formatting and mapping for Magistral reasoning #136
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -7,34 +7,34 @@ | |||||||||||||||
| # <a href="https://discord.gg/unsloth"><img src="https://github.com/unslothai/unsloth/raw/main/images/Discord button.png" width="145"></a> | ||||||||||||||||
| # <a href="https://docs.unsloth.ai/"><img src="https://github.com/unslothai/unsloth/blob/main/images/documentation%20green%20button.png?raw=true" width="125"></a></a> Join Discord if you need help + ⭐ <i>Star us on <a href="https://github.com/unslothai/unsloth">Github</a> </i> ⭐ | ||||||||||||||||
| # </div> | ||||||||||||||||
| # | ||||||||||||||||
| # | ||||||||||||||||
| # To install Unsloth your local device, follow [our guide](https://docs.unsloth.ai/get-started/install-and-update). This notebook is licensed [LGPL-3.0](https://github.com/unslothai/notebooks?tab=LGPL-3.0-1-ov-file#readme). | ||||||||||||||||
| # | ||||||||||||||||
| # | ||||||||||||||||
| # You will learn how to do [data prep](#Data), how to [train](#Train), how to [run the model](#Inference), & [how to save it](#Save) | ||||||||||||||||
| # | ||||||||||||||||
| # | ||||||||||||||||
|
|
||||||||||||||||
| # ### News | ||||||||||||||||
|
|
||||||||||||||||
| # | ||||||||||||||||
| # | ||||||||||||||||
| # Unsloth's [Docker image](https://hub.docker.com/r/unsloth/unsloth) is here! Start training with no setup & environment issues. [Read our Guide](https://docs.unsloth.ai/new/how-to-train-llms-with-unsloth-and-docker). | ||||||||||||||||
| # | ||||||||||||||||
| # | ||||||||||||||||
| # [gpt-oss RL](https://docs.unsloth.ai/new/gpt-oss-reinforcement-learning) is now supported with the fastest inference & lowest VRAM. Try our [new notebook](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/gpt-oss-(20B)-GRPO.ipynb) which creates kernels! | ||||||||||||||||
| # | ||||||||||||||||
| # | ||||||||||||||||
| # Introducing [Vision](https://docs.unsloth.ai/new/vision-reinforcement-learning-vlm-rl) and [Standby](https://docs.unsloth.ai/basics/memory-efficient-rl) for RL! Train Qwen, Gemma etc. VLMs with GSPO - even faster with less VRAM. | ||||||||||||||||
| # | ||||||||||||||||
| # | ||||||||||||||||
| # Unsloth now supports Text-to-Speech (TTS) models. Read our [guide here](https://docs.unsloth.ai/basics/text-to-speech-tts-fine-tuning). | ||||||||||||||||
| # | ||||||||||||||||
| # | ||||||||||||||||
| # Visit our docs for all our [model uploads](https://docs.unsloth.ai/get-started/all-our-models) and [notebooks](https://docs.unsloth.ai/get-started/unsloth-notebooks). | ||||||||||||||||
| # | ||||||||||||||||
| # | ||||||||||||||||
|
|
||||||||||||||||
| # # ### Installation | ||||||||||||||||
| # | ||||||||||||||||
| # | ||||||||||||||||
| # # In[ ]: | ||||||||||||||||
| # | ||||||||||||||||
| # | ||||||||||||||||
| # | ||||||||||||||||
| # | ||||||||||||||||
| # get_ipython().run_cell_magic('capture', '', 'import os, re\nif "COLAB_" not in "".join(os.environ.keys()):\n !pip install unsloth\nelse:\n # Do this only in Colab notebooks! Otherwise use pip install unsloth\n import torch; v = re.match(r"[0-9\\.]{3,}", str(torch.__version__)).group(0)\n xformers = "xformers==" + ("0.0.32.post2" if v == "2.8.0" else "0.0.29.post3")\n !pip install --no-deps bitsandbytes accelerate {xformers} peft trl triton cut_cross_entropy unsloth_zoo\n !pip install sentencepiece protobuf "datasets>=3.4.1,<4.0.0" "huggingface_hub>=0.34.0" hf_transfer\n !pip install --no-deps unsloth\n!pip install transformers==4.56.2\n!pip install --no-deps trl==0.22.2\n') | ||||||||||||||||
| # | ||||||||||||||||
| # | ||||||||||||||||
| # | ||||||||||||||||
| # | ||||||||||||||||
| # # ### Unsloth | ||||||||||||||||
|
|
||||||||||||||||
| # In[ ]: | ||||||||||||||||
|
|
@@ -114,25 +114,22 @@ | |||||||||||||||
| # In[8]: | ||||||||||||||||
|
|
||||||||||||||||
|
|
||||||||||||||||
| def generate_conversation(examples): | ||||||||||||||||
| problems = examples["problem"] | ||||||||||||||||
| solutions = examples["generated_solution"] | ||||||||||||||||
| conversations = [] | ||||||||||||||||
| for problem, solution in zip(problems, solutions): | ||||||||||||||||
| conversations.append([ | ||||||||||||||||
| def generate_conversation(example): | ||||||||||||||||
| problem = example["problem"] | ||||||||||||||||
| solution = example["generated_solution"] | ||||||||||||||||
| conversation = [ | ||||||||||||||||
| {"role" : "user", "content" : problem}, | ||||||||||||||||
| {"role" : "assistant", "content" : solution}, | ||||||||||||||||
| ]) | ||||||||||||||||
| return { "conversations": conversations, } | ||||||||||||||||
| ] | ||||||||||||||||
| return { "conversations": conversation } | ||||||||||||||||
|
|
||||||||||||||||
|
|
||||||||||||||||
| # In[9]: | ||||||||||||||||
|
|
||||||||||||||||
|
|
||||||||||||||||
| reasoning_conversations = tokenizer.apply_chat_template( | ||||||||||||||||
| reasoning_dataset.map(generate_conversation, batched = True)["conversations"], | ||||||||||||||||
| tokenize = False, | ||||||||||||||||
| ) | ||||||||||||||||
| reasoning_conversations = [ | ||||||||||||||||
| tokenizer.apply_chat_template(conv["conversations"],tokenize = False,) for conv in reasoning_dataset.map(generate_conversation) | ||||||||||||||||
| ] | ||||||||||||||||
|
Comment on lines
+130
to
+132
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This list comprehension is written across multiple lines, but line 131 is very long and contains multiple parts of the expression, which harms readability. According to PEP 8, lines should be limited to 79 or 99 characters for readability.1 It's better to format long list comprehensions over multiple lines. This will make the code easier to read and maintain.
Suggested change
Style Guide ReferencesFootnotes
|
||||||||||||||||
|
|
||||||||||||||||
|
|
||||||||||||||||
| # Let's see the first transformed row: | ||||||||||||||||
|
|
@@ -261,7 +258,7 @@ def generate_conversation(examples): | |||||||||||||||
| # <a name="Save"></a> | ||||||||||||||||
| # ### Saving, loading finetuned models | ||||||||||||||||
| # To save the final model as LoRA adapters, either use Huggingface's `push_to_hub` for an online save or `save_pretrained` for a local save. | ||||||||||||||||
| # | ||||||||||||||||
| # | ||||||||||||||||
| # **[NOTE]** This ONLY saves the LoRA adapters, and not the full model. To save to 16bit or GGUF, scroll down! | ||||||||||||||||
|
|
||||||||||||||||
| # In[21]: | ||||||||||||||||
|
|
@@ -288,7 +285,7 @@ def generate_conversation(examples): | |||||||||||||||
|
|
||||||||||||||||
|
|
||||||||||||||||
| # ### Saving to float16 for VLLM | ||||||||||||||||
| # | ||||||||||||||||
| # | ||||||||||||||||
| # We also support saving to `float16` directly. Select `merged_16bit` for float16 or `merged_4bit` for int4. We also allow `lora` adapters as a fallback. Use `push_to_hub_merged` to upload to your Hugging Face account! You can go to https://huggingface.co/settings/tokens for your personal tokens. | ||||||||||||||||
|
|
||||||||||||||||
| # In[ ]: | ||||||||||||||||
|
|
@@ -317,12 +314,12 @@ def generate_conversation(examples): | |||||||||||||||
|
|
||||||||||||||||
| # ### GGUF / llama.cpp Conversion | ||||||||||||||||
| # To save to `GGUF` / `llama.cpp`, we support it natively now! We clone `llama.cpp` and we default save it to `q8_0`. We allow all methods like `q4_k_m`. Use `save_pretrained_gguf` for local saving and `push_to_hub_gguf` for uploading to HF. | ||||||||||||||||
| # | ||||||||||||||||
| # | ||||||||||||||||
| # Some supported quant methods (full list on our [Wiki page](https://github.com/unslothai/unsloth/wiki#gguf-quantization-options)): | ||||||||||||||||
| # * `q8_0` - Fast conversion. High resource use, but generally acceptable. | ||||||||||||||||
| # * `q4_k_m` - Recommended. Uses Q6_K for half of the attention.wv and feed_forward.w2 tensors, else Q4_K. | ||||||||||||||||
| # * `q5_k_m` - Recommended. Uses Q6_K for half of the attention.wv and feed_forward.w2 tensors, else Q5_K. | ||||||||||||||||
| # | ||||||||||||||||
| # | ||||||||||||||||
| # [**NEW**] To finetune and auto export to Ollama, try our [Ollama notebook](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Llama3_(8B)-Ollama.ipynb) | ||||||||||||||||
|
|
||||||||||||||||
| # In[24]: | ||||||||||||||||
|
|
@@ -359,22 +356,22 @@ def generate_conversation(examples): | |||||||||||||||
|
|
||||||||||||||||
|
|
||||||||||||||||
| # Now, use the `model-unsloth.gguf` file or `model-unsloth-Q4_K_M.gguf` file in llama.cpp. | ||||||||||||||||
| # | ||||||||||||||||
| # | ||||||||||||||||
| # And we're done! If you have any questions on Unsloth, we have a [Discord](https://discord.gg/unsloth) channel! If you find any bugs or want to keep updated with the latest LLM stuff, or need help, join projects etc, feel free to join our Discord! | ||||||||||||||||
| # | ||||||||||||||||
| # | ||||||||||||||||
| # Some other links: | ||||||||||||||||
| # 1. Train your own reasoning model - Llama GRPO notebook [Free Colab](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Llama3.1_(8B)-GRPO.ipynb) | ||||||||||||||||
| # 2. Saving finetunes to Ollama. [Free notebook](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Llama3_(8B)-Ollama.ipynb) | ||||||||||||||||
| # 3. Llama 3.2 Vision finetuning - Radiography use case. [Free Colab](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Llama3.2_(11B)-Vision.ipynb) | ||||||||||||||||
| # 6. See notebooks for DPO, ORPO, Continued pretraining, conversational finetuning and more on our [documentation](https://docs.unsloth.ai/get-started/unsloth-notebooks)! | ||||||||||||||||
| # | ||||||||||||||||
| # | ||||||||||||||||
| # <div class="align-center"> | ||||||||||||||||
| # <a href="https://unsloth.ai"><img src="https://github.com/unslothai/unsloth/raw/main/images/unsloth%20new%20logo.png" width="115"></a> | ||||||||||||||||
| # <a href="https://discord.gg/unsloth"><img src="https://github.com/unslothai/unsloth/raw/main/images/Discord.png" width="145"></a> | ||||||||||||||||
| # <a href="https://docs.unsloth.ai/"><img src="https://github.com/unslothai/unsloth/blob/main/images/documentation%20green%20button.png?raw=true" width="125"></a> | ||||||||||||||||
| # | ||||||||||||||||
| # | ||||||||||||||||
| # Join Discord if you need help + ⭐️ <i>Star us on <a href="https://github.com/unslothai/unsloth">Github</a> </i> ⭐️ | ||||||||||||||||
| # </div> | ||||||||||||||||
| # | ||||||||||||||||
| # | ||||||||||||||||
| # This notebook and all Unsloth notebooks are licensed [LGPL-3.0](https://github.com/unslothai/notebooks?tab=LGPL-3.0-1-ov-file#readme). | ||||||||||||||||
| # | ||||||||||||||||
| # | ||||||||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The list comprehension is a bit difficult to read due to its formatting. The arguments to
apply_chat_templateare not clearly separated, and theforloop is on a separate line which is unusual for a list comprehension of this style. For better readability and adherence to common Python style (PEP 8), I suggest reformatting it.1A more readable version would be:
Style Guide References
Footnotes
PEP 8 provides guidelines on code layout, including how to format long lines and comprehensions, to improve readability. ↩