diff --git a/.gitattributes b/.gitattributes
index 6c0e6da2e0f08602e345e9061404f6b6e07fc72f..4d0692647539581025373e89b4c70fa37efb8f56 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -43,3 +43,8 @@ cpt_qwen_14B/checkpoints/checkpoint-600/tokenizer.json filter=lfs diff=lfs merge
cpt_qwen_14B/checkpoints/checkpoint-656/tokenizer.json filter=lfs diff=lfs merge=lfs -text
cpt_qwen_14B/wandb/offline-run-20251223_125436-g6vlcw0j/run-g6vlcw0j.wandb filter=lfs diff=lfs merge=lfs -text
sft_qwen_14B/wandb/run-20251223_142702-ldjr67u6/run-ldjr67u6.wandb filter=lfs diff=lfs merge=lfs -text
+cpt_devstral_24B/best_adapter/tokenizer.json filter=lfs diff=lfs merge=lfs -text
+cpt_devstral_24B/checkpoints/checkpoint-400/tokenizer.json filter=lfs diff=lfs merge=lfs -text
+cpt_devstral_24B/checkpoints/checkpoint-500/tokenizer.json filter=lfs diff=lfs merge=lfs -text
+cpt_devstral_24B/checkpoints/checkpoint-600/tokenizer.json filter=lfs diff=lfs merge=lfs -text
+cpt_devstral_24B/checkpoints/checkpoint-686/tokenizer.json filter=lfs diff=lfs merge=lfs -text
diff --git a/cpt_devstral_24B/best_adapter/README.md b/cpt_devstral_24B/best_adapter/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..2f04c3de935db4cae3da32ab6d1fcbbea11b4e09
--- /dev/null
+++ b/cpt_devstral_24B/best_adapter/README.md
@@ -0,0 +1,207 @@
+---
+base_model: /workspace/Models/Devstral-Small-2-24B-Instruct-2512
+library_name: peft
+pipeline_tag: text-generation
+tags:
+- base_model:adapter:/workspace/Models/Devstral-Small-2-24B-Instruct-2512
+- lora
+- transformers
+---
+
+# Model Card for Model ID
+
+
+
+
+
+## Model Details
+
+### Model Description
+
+
+
+
+
+- **Developed by:** [More Information Needed]
+- **Funded by [optional]:** [More Information Needed]
+- **Shared by [optional]:** [More Information Needed]
+- **Model type:** [More Information Needed]
+- **Language(s) (NLP):** [More Information Needed]
+- **License:** [More Information Needed]
+- **Finetuned from model [optional]:** [More Information Needed]
+
+### Model Sources [optional]
+
+
+
+- **Repository:** [More Information Needed]
+- **Paper [optional]:** [More Information Needed]
+- **Demo [optional]:** [More Information Needed]
+
+## Uses
+
+
+
+### Direct Use
+
+
+
+[More Information Needed]
+
+### Downstream Use [optional]
+
+
+
+[More Information Needed]
+
+### Out-of-Scope Use
+
+
+
+[More Information Needed]
+
+## Bias, Risks, and Limitations
+
+
+
+[More Information Needed]
+
+### 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.
+
+[More Information Needed]
+
+## Training Details
+
+### Training Data
+
+
+
+[More Information Needed]
+
+### Training Procedure
+
+
+
+#### Preprocessing [optional]
+
+[More Information Needed]
+
+
+#### Training Hyperparameters
+
+- **Training regime:** [More Information Needed]
+
+#### Speeds, Sizes, Times [optional]
+
+
+
+[More Information Needed]
+
+## Evaluation
+
+
+
+### Testing Data, Factors & Metrics
+
+#### Testing Data
+
+
+
+[More Information Needed]
+
+#### Factors
+
+
+
+[More Information Needed]
+
+#### Metrics
+
+
+
+[More Information Needed]
+
+### Results
+
+[More Information Needed]
+
+#### Summary
+
+
+
+## Model Examination [optional]
+
+
+
+[More Information Needed]
+
+## Environmental Impact
+
+
+
+Carbon emissions can be estimated using the [Machine Learning Impact calculator](https://mlco2.github.io/impact#compute) presented in [Lacoste et al. (2019)](https://arxiv.org/abs/1910.09700).
+
+- **Hardware Type:** [More Information Needed]
+- **Hours used:** [More Information Needed]
+- **Cloud Provider:** [More Information Needed]
+- **Compute Region:** [More Information Needed]
+- **Carbon Emitted:** [More Information Needed]
+
+## Technical Specifications [optional]
+
+### Model Architecture and Objective
+
+[More Information Needed]
+
+### Compute Infrastructure
+
+[More Information Needed]
+
+#### Hardware
+
+[More Information Needed]
+
+#### Software
+
+[More Information Needed]
+
+## Citation [optional]
+
+
+
+**BibTeX:**
+
+[More Information Needed]
+
+**APA:**
+
+[More Information Needed]
+
+## Glossary [optional]
+
+
+
+[More Information Needed]
+
+## More Information [optional]
+
+[More Information Needed]
+
+## Model Card Authors [optional]
+
+[More Information Needed]
+
+## Model Card Contact
+
+[More Information Needed]
+### Framework versions
+
+- PEFT 0.18.0
\ No newline at end of file
diff --git a/cpt_devstral_24B/best_adapter/adapter_config.json b/cpt_devstral_24B/best_adapter/adapter_config.json
new file mode 100644
index 0000000000000000000000000000000000000000..a10b9f1b7bb62dced9a7c13375c7ebbeb347c15b
--- /dev/null
+++ b/cpt_devstral_24B/best_adapter/adapter_config.json
@@ -0,0 +1,43 @@
+{
+ "alora_invocation_tokens": null,
+ "alpha_pattern": {},
+ "arrow_config": null,
+ "auto_mapping": null,
+ "base_model_name_or_path": "/workspace/Models/Devstral-Small-2-24B-Instruct-2512",
+ "bias": "none",
+ "corda_config": null,
+ "ensure_weight_tying": false,
+ "eva_config": null,
+ "exclude_modules": null,
+ "fan_in_fan_out": false,
+ "inference_mode": true,
+ "init_lora_weights": true,
+ "layer_replication": null,
+ "layers_pattern": null,
+ "layers_to_transform": null,
+ "loftq_config": {},
+ "lora_alpha": 128,
+ "lora_bias": false,
+ "lora_dropout": 0.05,
+ "megatron_config": null,
+ "megatron_core": "megatron.core",
+ "modules_to_save": null,
+ "peft_type": "LORA",
+ "peft_version": "0.18.0",
+ "qalora_group_size": 16,
+ "r": 64,
+ "rank_pattern": {},
+ "revision": null,
+ "target_modules": [
+ "k_proj",
+ "o_proj",
+ "q_proj",
+ "v_proj"
+ ],
+ "target_parameters": null,
+ "task_type": "CAUSAL_LM",
+ "trainable_token_indices": null,
+ "use_dora": false,
+ "use_qalora": false,
+ "use_rslora": false
+}
\ No newline at end of file
diff --git a/cpt_devstral_24B/best_adapter/adapter_model.safetensors b/cpt_devstral_24B/best_adapter/adapter_model.safetensors
new file mode 100644
index 0000000000000000000000000000000000000000..55a3c8fad99c3849ac93d36f5e50dbb9ac430b18
--- /dev/null
+++ b/cpt_devstral_24B/best_adapter/adapter_model.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b6528dd74de4fce9bff6c944acd9bc01868d155b1ea5403fe93fb8c5ced4d4ec
+size 364983848
diff --git a/cpt_devstral_24B/best_adapter/chat_template.jinja b/cpt_devstral_24B/best_adapter/chat_template.jinja
new file mode 100644
index 0000000000000000000000000000000000000000..01c8776b5b3496af72e92a53a3bf92e113f66f2c
--- /dev/null
+++ b/cpt_devstral_24B/best_adapter/chat_template.jinja
@@ -0,0 +1,121 @@
+{#- Default system message if no system prompt is passed. #}
+{%- set default_system_message = '' %}
+
+{#- Begin of sequence token. #}
+{{- bos_token }}
+
+{#- Handle system prompt if it exists. #}
+{#- System prompt supports text content or text chunks. #}
+{%- if messages[0]['role'] == 'system' %}
+ {{- '[SYSTEM_PROMPT]' -}}
+ {%- if messages[0]['content'] is string %}
+ {{- messages[0]['content'] -}}
+ {%- else %}
+ {%- for block in messages[0]['content'] %}
+ {%- if block['type'] == 'text' %}
+ {{- block['text'] }}
+ {%- else %}
+ {{- raise_exception('Only text chunks are supported in system message contents.') }}
+ {%- endif %}
+ {%- endfor %}
+ {%- endif %}
+ {{- '[/SYSTEM_PROMPT]' -}}
+ {%- set loop_messages = messages[1:] %}
+{%- else %}
+ {%- set loop_messages = messages %}
+ {%- if default_system_message != '' %}
+ {{- '[SYSTEM_PROMPT]' + default_system_message + '[/SYSTEM_PROMPT]' }}
+ {%- endif %}
+{%- endif %}
+
+
+{#- Tools definition #}
+{%- set tools_definition = '' %}
+{%- set has_tools = false %}
+{%- if tools is defined and tools is not none and tools|length > 0 %}
+ {%- set has_tools = true %}
+ {%- set tools_definition = '[AVAILABLE_TOOLS]' + (tools| tojson) + '[/AVAILABLE_TOOLS]' %}
+ {{- tools_definition }}
+{%- endif %}
+
+{#- Checks for alternating user/assistant messages. #}
+{%- set ns = namespace(index=0) %}
+{%- for message in loop_messages %}
+ {%- if message.role == 'user' or (message.role == 'assistant' and (message.tool_calls is not defined or message.tool_calls is none or message.tool_calls | length == 0)) %}
+ {%- if (message['role'] == 'user') != (ns.index % 2 == 0) %}
+ {{- raise_exception('After the optional system message, conversation roles must alternate user and assistant roles except for tool calls and results.') }}
+ {%- endif %}
+ {%- set ns.index = ns.index + 1 %}
+ {%- endif %}
+{%- endfor %}
+
+{#- Handle conversation messages. #}
+{%- for message in loop_messages %}
+
+ {#- User messages supports text content or text and image chunks. #}
+ {%- if message['role'] == 'user' %}
+ {%- if message['content'] is string %}
+ {{- '[INST]' + message['content'] + '[/INST]' }}
+ {%- elif message['content'] | length > 0 %}
+ {{- '[INST]' }}
+ {%- if message['content'] | length == 2 %}
+ {%- set blocks = message['content'] | sort(attribute='type') %}
+ {%- else %}
+ {%- set blocks = message['content'] %}
+ {%- endif %}
+ {%- for block in blocks %}
+ {%- if block['type'] == 'text' %}
+ {{- block['text'] }}
+ {%- elif block['type'] in ['image', 'image_url'] %}
+ {{- '[IMG]' }}
+ {%- else %}
+ {{- raise_exception('Only text, image and image_url chunks are supported in user message content.') }}
+ {%- endif %}
+ {%- endfor %}
+ {{- '[/INST]' }}
+ {%- else %}
+ {{- raise_exception('User message must have a string or a list of chunks in content') }}
+ {%- endif %}
+
+ {#- Assistant messages supports text content or text and image chunks. #}
+ {%- elif message['role'] == 'assistant' %}
+ {%- if (message['content'] is none or message['content'] == '' or message['content']|length == 0) and (message['tool_calls'] is not defined or message['tool_calls'] is none or message['tool_calls']|length == 0) %}
+ {{- raise_exception('Assistant message must have a string or a list of chunks in content or a list of tool calls.') }}
+ {%- endif %}
+
+ {%- if message['content'] is string %}
+ {{- message['content'] }}
+ {%- elif message['content'] | length > 0 %}
+ {%- for block in message['content'] %}
+ {%- if block['type'] == 'text' %}
+ {{- block['text'] }}
+ {%- else %}
+ {{- raise_exception('Only text chunks are supported in assistant message contents.') }}
+ {%- endif %}
+ {%- endfor %}
+ {%- endif %}
+
+ {%- if message['tool_calls'] is defined and message['tool_calls'] is not none and message['tool_calls']|length > 0 %}
+ {%- for tool in message['tool_calls'] %}
+ {%- set arguments = tool['function']['arguments'] %}
+ {%- if arguments is not string %}
+ {%- set arguments = arguments|tojson|safe %}
+ {%- elif arguments == '' %}
+ {%- set arguments = '{}' %}
+ {%- endif %}
+ {{- '[TOOL_CALLS]' + tool['function']['name'] + '[ARGS]' + arguments }}
+ {%- endfor %}
+ {%- endif %}
+
+ {#- End of sequence token for each assistant messages. #}
+ {{- eos_token }}
+
+ {#- Tool messages only supports text content. #}
+ {%- elif message['role'] == 'tool' %}
+ {{- '[TOOL_RESULTS]' + message['content']|string + '[/TOOL_RESULTS]' }}
+
+ {#- Raise exception for unsupported roles. #}
+ {%- else %}
+ {{- raise_exception('Only user, assistant and tool roles are supported, got ' + message['role'] + '.') }}
+ {%- endif %}
+{%- endfor %}
\ No newline at end of file
diff --git a/cpt_devstral_24B/best_adapter/tokenizer.json b/cpt_devstral_24B/best_adapter/tokenizer.json
new file mode 100644
index 0000000000000000000000000000000000000000..5b51e255641d3ab81f891f54bd61370fcedf6622
--- /dev/null
+++ b/cpt_devstral_24B/best_adapter/tokenizer.json
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:286acad9b0e27fce778ac429763536accf618ccb6ed72963b6f94685e531c5c7
+size 17077402
diff --git a/cpt_devstral_24B/best_adapter/tokenizer_config.json b/cpt_devstral_24B/best_adapter/tokenizer_config.json
new file mode 100644
index 0000000000000000000000000000000000000000..1bb6b32cec8ab9654d2c84faeb9a332373476017
--- /dev/null
+++ b/cpt_devstral_24B/best_adapter/tokenizer_config.json
@@ -0,0 +1,1013 @@
+{
+ "backend": "tokenizers",
+ "bos_token": "",
+ "eos_token": "",
+ "extra_special_tokens": [
+ "",
+ "",
+ "",
+ "[INST]",
+ "[/INST]",
+ "[AVAILABLE_TOOLS]",
+ "[/AVAILABLE_TOOLS]",
+ "[TOOL_RESULTS]",
+ "[/TOOL_RESULTS]",
+ "[TOOL_CALLS]",
+ "[IMG]",
+ "",
+ "[IMG_BREAK]",
+ "[IMG_END]",
+ "[PREFIX]",
+ "[MIDDLE]",
+ "[SUFFIX]",
+ "[SYSTEM_PROMPT]",
+ "[/SYSTEM_PROMPT]",
+ "[TOOL_CONTENT]",
+ "",
+ "",
+ "",
+ "",
+ "[AUDIO]",
+ "[BEGIN_AUDIO]",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "[ARGS]",
+ "[CALL_ID]",
+ "[THINK]",
+ "[/THINK]",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "