diff --git a/.nojekyll b/.nojekyll index 22f7b7aed..476d4c53d 100644 --- a/.nojekyll +++ b/.nojekyll @@ -1 +1 @@ -7964ed8f \ No newline at end of file +c2c0a3d8 \ No newline at end of file diff --git a/docs/dataset-formats/conversation.html b/docs/dataset-formats/conversation.html index 5ac0666ba..c5336d9ab 100644 --- a/docs/dataset-formats/conversation.html +++ b/docs/dataset-formats/conversation.html @@ -805,14 +805,16 @@ Warning

If you have tool arguments with same name but different dtypes (like "time": string and "time": number), please save arguments: as JSON string to prevent datasets from having casting issues.

"arguments": "{\"...\": \"...\"}"
+

The same is applicable for tool parameters.

+
"parameters": "{\"...\": \"...\"}"

Example config for Llama4:

-
chat_template: llama4
-datasets:
-  - path: Nanobit/text-tools-2k-test
-    type: chat_template
-    # field_tools: tools # default is `tools`
+
chat_template: llama4
+datasets:
+  - path: Nanobit/text-tools-2k-test
+    type: chat_template
+    # field_tools: tools # default is `tools`
@@ -835,43 +837,43 @@ Tip
data.jsonl
-
{
-  "conversations": [
-    {"from": "system", "value": "You are an AI assistant.", "train": false},
-    {"from": "human", "value": "Hello", "train": false},
-    {"from": "assistant", "value": "Hello", "train": true},
-    {"from": "human", "value": "How are you?", "train": true},
-    {
-      "from": "assistant",
-      "value": "I'm doing very well, thank you!",
-      "train_detail": [
-        {"begin_offset": 0, "end_offset": 8, "train": false},
-        {"begin_offset": 9, "end_offset": 18, "train": true},
-        {"begin_offset": 19, "end_offset": 30, "train": false},
-      ],
-    },
-    {
-        "from": "human",
-        "value": "I'm doing very well, thank you!",
-        "train": true,
-    },
-    {"from": "assistant", "value": "Hi there!", "train": true}
-  ]
-}
+
{
+  "conversations": [
+    {"from": "system", "value": "You are an AI assistant.", "train": false},
+    {"from": "human", "value": "Hello", "train": false},
+    {"from": "assistant", "value": "Hello", "train": true},
+    {"from": "human", "value": "How are you?", "train": true},
+    {
+      "from": "assistant",
+      "value": "I'm doing very well, thank you!",
+      "train_detail": [
+        {"begin_offset": 0, "end_offset": 8, "train": false},
+        {"begin_offset": 9, "end_offset": 18, "train": true},
+        {"begin_offset": 19, "end_offset": 30, "train": false},
+      ],
+    },
+    {
+        "from": "human",
+        "value": "I'm doing very well, thank you!",
+        "train": true,
+    },
+    {"from": "assistant", "value": "Hi there!", "train": true}
+  ]
+}

The configuration would look like:

-
datasets:
-  - path: ...
-    type: chat_template
-    chat_template: tokenizer_default
-    field_messages: conversations
-    message_property_mappings:
-      role: from
-      content: value
-    roles_to_train: []
-    train_on_eos: turn
-    message_field_training: train
-    message_field_training_detail: train_detail
+
datasets:
+  - path: ...
+    type: chat_template
+    chat_template: tokenizer_default
+    field_messages: conversations
+    message_property_mappings:
+      role: from
+      content: value
+    roles_to_train: []
+    train_on_eos: turn
+    message_field_training: train
+    message_field_training_detail: train_detail
@@ -889,20 +891,20 @@ Tip

Reasoning split

(For Qwen3 template only) Enable reasoning split, where the reasoning is split from the content and passed as a separate field into the template.

-
datasets:
-  - path: ...
-    type: chat_template
-    chat_template: qwen3
-    split_thinking: true
+
datasets:
+  - path: ...
+    type: chat_template
+    chat_template: qwen3
+    split_thinking: true

For example, a content can look like:

-
{
-  "content": "<think>Some thinking outputs</think>Output after thinking."
-}
-

After split, it will look like:

{
-  "reasoning_content": "Some thinking outputs",
-  "content": "Output after thinking..."
-}
+ "content": "<think>Some thinking outputs</think>Output after thinking." +}
+

After split, it will look like:

+
{
+  "reasoning_content": "Some thinking outputs",
+  "content": "Output after thinking..."
+}
@@ -928,7 +930,7 @@ Important
data.jsonl
-
{"conversations": [{"role": "...", "value": "..."}]}
+
{"conversations": [{"role": "...", "value": "..."}]}
diff --git a/search.json b/search.json index 93f35ae93..f141f7900 100644 --- a/search.json +++ b/search.json @@ -462,7 +462,7 @@ "href": "docs/dataset-formats/conversation.html", "title": "Conversation", "section": "", - "text": "Chat Template strategy uses a jinja2 template that converts a list of messages into a prompt. Support using tokenizer’s template, a supported template, or custom jinja2.\n\n\ndata.jsonl\n\n{\"messages\": [{\"role\": \"...\", \"content\": \"...\"}, {\"role\": \"...\", \"content\": \"...\"}, ...]}\n\nSee configs for full configs and supported templates.\n\n\nMost configs can be adapted as follows:\n# old\nchat_template: chatml\ndatasets:\n - path: ...\n type: sharegpt\n conversation: chatml\n\n# new (if using tokenizer's chat_template)\ndatasets:\n - path: ...\n type: chat_template\n\n field_messages: conversations\n message_property_mappings:\n role: from\n content: value\n\n# new (if setting a new chat_template like chatml, gemma, etc)\nchat_template: chatml\ndatasets:\n - path: ...\n type: chat_template\n\n field_messages: conversations\n message_property_mappings:\n role: from\n content: value\nWe recommend checking the below examples for other usecases.\n\n\n\n\n\n(Legacy) Using the default chat template in the tokenizer_config.json on OpenAI messages format, training on only last message.\ndatasets:\n - path: ...\n type: chat_template\n roles_to_train:\n train_on_eos:\n\n\n\n\n\n\nTip\n\n\n\nIf you receive an error like “chat_template choice is tokenizer_default but tokenizer’s chat_template is null.”, it means the tokenizer does not have a default chat_template. Follow the examples below instead to set a custom chat_template.\n\n\n\n\n\nUsing the gemma chat template to override the tokenizer_config.json’s chat template on OpenAI messages format, training on all assistant messages.\nchat_template: gemma # this overwrites the tokenizer's chat_template\ndatasets:\n - path: ...\n type: chat_template\n roles_to_train: [\"assistant\"] # default value\n\n\n\n\n\n\nNote\n\n\n\nIf you want to use built-in chat_template, use chat_template: tokenizer_default (this is set by default).\n\n\n\n\n\nUsing the tokenizer_config.json’s chat template or chatml as fallback if the former’s chat template does not exist, on OpenAI messages format, training on all assistant messages.\nchat_template: tokenizer_default_fallback_chatml # this overwrites the tokenizer's chat_template\ndatasets:\n - path: ...\n type: chat_template\n\n\n\nUsing a custom jinja template on OpenAI messages format, training on all assistant messages.\n# chat_template: jinja # `jinja` will be implied if the `chat_template_jinja` is set and this field is empty\nchat_template_jinja: \"{{ bos_token }}{% for message in messages %}{% if (message['role'] == 'system') %}{{'<|system|>' + '\\n' + message['content'] + '<|end|>' + '\\n'}}{% elif (message['role'] == 'user') %}{{'<|user|>' + '\\n' + message['content'] + '<|end|>' + '\\n' + '<|assistant|>' + '\\n'}}{% elif message['role'] == 'assistant' %}{{message['content'] + '<|end|>' + '\\n'}}{% endif %}{% endfor %}\"\n\ndatasets:\n - path: ...\n type: chat_template\n\n\n\n\n\n\nImportant\n\n\n\nPlease make sure that your tokenizer.eos_token is same as EOS (End-of-Sequence) token in template. Otherwise, set eos_token under special_tokens:.\n\n\n\n\n\n\nIf you are using a template that has a different EOT (End-of-Turn) token from EOS token or multiple EOT tokens (like Mistral V7 Tekken), set the eot_tokens: config. The handling of EOT tokens follows train_on_eos: which defaults to turn.\n\neot_tokens:\n - \"[/INST]\"\n # - \"[/SYSTEM_PROMPT]\"\n\ndatasets:\n - path: ...\n type: chat_template\n\n # optional\n train_on_eot: turn # defaults read from train_on_eos (which defaults to turn)\n\n\n\n\n\n\nTip\n\n\n\nSee config documentation for detailed explanations of “turn”, “last”, and “all” options for training on tokens.\n\n\n\n\n\n\n\n\nNote\n\n\n\nUsing eot_tokens requires each token that exists in chat_template to be a single token in the tokenizer. Otherwise, the tokenizer will split the token and cause unexpected behavior.\nYou can add those tokens as new tokens under tokens: or (recommended) override unused added_tokens via added_tokens_overrides:. See config for more details.\n\n\n\nContinuing from the previous example, if you want to train on all EOT token trainable turns but only last EOS token, set train_on_eos: last.\n\neot_tokens:\n - \"[/INST]\"\n # ...\n\ndatasets:\n - path: ...\n type: chat_template\n\n train_on_eos: last\n train_on_eot: turn\n\n\n\n\n\n\nTip\n\n\n\nIf EOS token only appears at the end of a prompt, train_on_eos: last is equivalent to train_on_eos: turn. Therefore, generally, you can leave them to their defaults and omit them.\n\n\n\n\n\nInstead of passing tools via the system prompt, an alternative method would be to have the tools in a separate column and loaded via chat_template to let the template dynamically build it.\n{\n \"tools\": [\n {\n \"type\": \"...\",\n \"function\": {\n \"name\": \"...\",\n \"description\": \"...\",\n \"parameters\": {\n \"type\": \"...\",\n \"properties\": {\n // ...\n },\n \"required\": [\"...\"],\n },\n },\n },\n ],\n \"messages\": [\n // ...\n {\n \"role\": \"assistant\", // call the function via assistant\n \"tool_calls\": [\n {\n \"id\": \"...\", // required only for mistral\n \"type\": \"function\",\n \"function\": {\n \"name\": \"...\",\n \"arguments\": {\n \"...\": \"...\",\n }\n }\n }\n ]\n },\n {\n \"role\": \"tool\",\n \"tool_call_id\": \"...\", // required only for mistral\n \"name\": \"...\",\n \"content\": \"...\"\n },\n ],\n}\n\n\n\n\n\n\nNote\n\n\n\nTools need to follow JSON schema.\n\n\n\n\n\n\n\n\nWarning\n\n\n\nIf you have tool arguments with same name but different dtypes (like \"time\": string and \"time\": number), please save arguments: as JSON string to prevent datasets from having casting issues.\n\"arguments\": \"{\\\"...\\\": \\\"...\\\"}\"\n\n\nExample config for Llama4:\nchat_template: llama4\ndatasets:\n - path: Nanobit/text-tools-2k-test\n type: chat_template\n # field_tools: tools # default is `tools`\n\n\n\n\n\n\nTip\n\n\n\nLook into the chat_template you are using to see if it supports tools and what the expected role is for the tool answer. In the example above, the tool answer is expected to be in the tool or ipython role for llama4 template.\n\n\n\n\n\n(Advanced) Using fine-grained control over tokens and turns to train in a conversation\nFor a data sample that looks like:\n\n\ndata.jsonl\n\n{\n \"conversations\": [\n {\"from\": \"system\", \"value\": \"You are an AI assistant.\", \"train\": false},\n {\"from\": \"human\", \"value\": \"Hello\", \"train\": false},\n {\"from\": \"assistant\", \"value\": \"Hello\", \"train\": true},\n {\"from\": \"human\", \"value\": \"How are you?\", \"train\": true},\n {\n \"from\": \"assistant\",\n \"value\": \"I'm doing very well, thank you!\",\n \"train_detail\": [\n {\"begin_offset\": 0, \"end_offset\": 8, \"train\": false},\n {\"begin_offset\": 9, \"end_offset\": 18, \"train\": true},\n {\"begin_offset\": 19, \"end_offset\": 30, \"train\": false},\n ],\n },\n {\n \"from\": \"human\",\n \"value\": \"I'm doing very well, thank you!\",\n \"train\": true,\n },\n {\"from\": \"assistant\", \"value\": \"Hi there!\", \"train\": true}\n ]\n}\n\nThe configuration would look like:\ndatasets:\n - path: ...\n type: chat_template\n chat_template: tokenizer_default\n field_messages: conversations\n message_property_mappings:\n role: from\n content: value\n roles_to_train: []\n train_on_eos: turn\n message_field_training: train\n message_field_training_detail: train_detail\n\n\n\n\n\n\nTip\n\n\n\nIt is not necessary to set both message_field_training and message_field_training_detail at once.\n\n\n\n\n\n(For Qwen3 template only) Enable reasoning split, where the reasoning is split from the content and passed as a separate field into the template.\ndatasets:\n - path: ...\n type: chat_template\n chat_template: qwen3\n split_thinking: true\nFor example, a content can look like:\n{\n \"content\": \"<think>Some thinking outputs</think>Output after thinking.\"\n}\nAfter split, it will look like:\n{\n \"reasoning_content\": \"Some thinking outputs\",\n \"content\": \"Output after thinking...\"\n}", + "text": "Chat Template strategy uses a jinja2 template that converts a list of messages into a prompt. Support using tokenizer’s template, a supported template, or custom jinja2.\n\n\ndata.jsonl\n\n{\"messages\": [{\"role\": \"...\", \"content\": \"...\"}, {\"role\": \"...\", \"content\": \"...\"}, ...]}\n\nSee configs for full configs and supported templates.\n\n\nMost configs can be adapted as follows:\n# old\nchat_template: chatml\ndatasets:\n - path: ...\n type: sharegpt\n conversation: chatml\n\n# new (if using tokenizer's chat_template)\ndatasets:\n - path: ...\n type: chat_template\n\n field_messages: conversations\n message_property_mappings:\n role: from\n content: value\n\n# new (if setting a new chat_template like chatml, gemma, etc)\nchat_template: chatml\ndatasets:\n - path: ...\n type: chat_template\n\n field_messages: conversations\n message_property_mappings:\n role: from\n content: value\nWe recommend checking the below examples for other usecases.\n\n\n\n\n\n(Legacy) Using the default chat template in the tokenizer_config.json on OpenAI messages format, training on only last message.\ndatasets:\n - path: ...\n type: chat_template\n roles_to_train:\n train_on_eos:\n\n\n\n\n\n\nTip\n\n\n\nIf you receive an error like “chat_template choice is tokenizer_default but tokenizer’s chat_template is null.”, it means the tokenizer does not have a default chat_template. Follow the examples below instead to set a custom chat_template.\n\n\n\n\n\nUsing the gemma chat template to override the tokenizer_config.json’s chat template on OpenAI messages format, training on all assistant messages.\nchat_template: gemma # this overwrites the tokenizer's chat_template\ndatasets:\n - path: ...\n type: chat_template\n roles_to_train: [\"assistant\"] # default value\n\n\n\n\n\n\nNote\n\n\n\nIf you want to use built-in chat_template, use chat_template: tokenizer_default (this is set by default).\n\n\n\n\n\nUsing the tokenizer_config.json’s chat template or chatml as fallback if the former’s chat template does not exist, on OpenAI messages format, training on all assistant messages.\nchat_template: tokenizer_default_fallback_chatml # this overwrites the tokenizer's chat_template\ndatasets:\n - path: ...\n type: chat_template\n\n\n\nUsing a custom jinja template on OpenAI messages format, training on all assistant messages.\n# chat_template: jinja # `jinja` will be implied if the `chat_template_jinja` is set and this field is empty\nchat_template_jinja: \"{{ bos_token }}{% for message in messages %}{% if (message['role'] == 'system') %}{{'<|system|>' + '\\n' + message['content'] + '<|end|>' + '\\n'}}{% elif (message['role'] == 'user') %}{{'<|user|>' + '\\n' + message['content'] + '<|end|>' + '\\n' + '<|assistant|>' + '\\n'}}{% elif message['role'] == 'assistant' %}{{message['content'] + '<|end|>' + '\\n'}}{% endif %}{% endfor %}\"\n\ndatasets:\n - path: ...\n type: chat_template\n\n\n\n\n\n\nImportant\n\n\n\nPlease make sure that your tokenizer.eos_token is same as EOS (End-of-Sequence) token in template. Otherwise, set eos_token under special_tokens:.\n\n\n\n\n\n\nIf you are using a template that has a different EOT (End-of-Turn) token from EOS token or multiple EOT tokens (like Mistral V7 Tekken), set the eot_tokens: config. The handling of EOT tokens follows train_on_eos: which defaults to turn.\n\neot_tokens:\n - \"[/INST]\"\n # - \"[/SYSTEM_PROMPT]\"\n\ndatasets:\n - path: ...\n type: chat_template\n\n # optional\n train_on_eot: turn # defaults read from train_on_eos (which defaults to turn)\n\n\n\n\n\n\nTip\n\n\n\nSee config documentation for detailed explanations of “turn”, “last”, and “all” options for training on tokens.\n\n\n\n\n\n\n\n\nNote\n\n\n\nUsing eot_tokens requires each token that exists in chat_template to be a single token in the tokenizer. Otherwise, the tokenizer will split the token and cause unexpected behavior.\nYou can add those tokens as new tokens under tokens: or (recommended) override unused added_tokens via added_tokens_overrides:. See config for more details.\n\n\n\nContinuing from the previous example, if you want to train on all EOT token trainable turns but only last EOS token, set train_on_eos: last.\n\neot_tokens:\n - \"[/INST]\"\n # ...\n\ndatasets:\n - path: ...\n type: chat_template\n\n train_on_eos: last\n train_on_eot: turn\n\n\n\n\n\n\nTip\n\n\n\nIf EOS token only appears at the end of a prompt, train_on_eos: last is equivalent to train_on_eos: turn. Therefore, generally, you can leave them to their defaults and omit them.\n\n\n\n\n\nInstead of passing tools via the system prompt, an alternative method would be to have the tools in a separate column and loaded via chat_template to let the template dynamically build it.\n{\n \"tools\": [\n {\n \"type\": \"...\",\n \"function\": {\n \"name\": \"...\",\n \"description\": \"...\",\n \"parameters\": {\n \"type\": \"...\",\n \"properties\": {\n // ...\n },\n \"required\": [\"...\"],\n },\n },\n },\n ],\n \"messages\": [\n // ...\n {\n \"role\": \"assistant\", // call the function via assistant\n \"tool_calls\": [\n {\n \"id\": \"...\", // required only for mistral\n \"type\": \"function\",\n \"function\": {\n \"name\": \"...\",\n \"arguments\": {\n \"...\": \"...\",\n }\n }\n }\n ]\n },\n {\n \"role\": \"tool\",\n \"tool_call_id\": \"...\", // required only for mistral\n \"name\": \"...\",\n \"content\": \"...\"\n },\n ],\n}\n\n\n\n\n\n\nNote\n\n\n\nTools need to follow JSON schema.\n\n\n\n\n\n\n\n\nWarning\n\n\n\nIf you have tool arguments with same name but different dtypes (like \"time\": string and \"time\": number), please save arguments: as JSON string to prevent datasets from having casting issues.\n\"arguments\": \"{\\\"...\\\": \\\"...\\\"}\"\nThe same is applicable for tool parameters.\n\"parameters\": \"{\\\"...\\\": \\\"...\\\"}\"\n\n\nExample config for Llama4:\nchat_template: llama4\ndatasets:\n - path: Nanobit/text-tools-2k-test\n type: chat_template\n # field_tools: tools # default is `tools`\n\n\n\n\n\n\nTip\n\n\n\nLook into the chat_template you are using to see if it supports tools and what the expected role is for the tool answer. In the example above, the tool answer is expected to be in the tool or ipython role for llama4 template.\n\n\n\n\n\n(Advanced) Using fine-grained control over tokens and turns to train in a conversation\nFor a data sample that looks like:\n\n\ndata.jsonl\n\n{\n \"conversations\": [\n {\"from\": \"system\", \"value\": \"You are an AI assistant.\", \"train\": false},\n {\"from\": \"human\", \"value\": \"Hello\", \"train\": false},\n {\"from\": \"assistant\", \"value\": \"Hello\", \"train\": true},\n {\"from\": \"human\", \"value\": \"How are you?\", \"train\": true},\n {\n \"from\": \"assistant\",\n \"value\": \"I'm doing very well, thank you!\",\n \"train_detail\": [\n {\"begin_offset\": 0, \"end_offset\": 8, \"train\": false},\n {\"begin_offset\": 9, \"end_offset\": 18, \"train\": true},\n {\"begin_offset\": 19, \"end_offset\": 30, \"train\": false},\n ],\n },\n {\n \"from\": \"human\",\n \"value\": \"I'm doing very well, thank you!\",\n \"train\": true,\n },\n {\"from\": \"assistant\", \"value\": \"Hi there!\", \"train\": true}\n ]\n}\n\nThe configuration would look like:\ndatasets:\n - path: ...\n type: chat_template\n chat_template: tokenizer_default\n field_messages: conversations\n message_property_mappings:\n role: from\n content: value\n roles_to_train: []\n train_on_eos: turn\n message_field_training: train\n message_field_training_detail: train_detail\n\n\n\n\n\n\nTip\n\n\n\nIt is not necessary to set both message_field_training and message_field_training_detail at once.\n\n\n\n\n\n(For Qwen3 template only) Enable reasoning split, where the reasoning is split from the content and passed as a separate field into the template.\ndatasets:\n - path: ...\n type: chat_template\n chat_template: qwen3\n split_thinking: true\nFor example, a content can look like:\n{\n \"content\": \"<think>Some thinking outputs</think>Output after thinking.\"\n}\nAfter split, it will look like:\n{\n \"reasoning_content\": \"Some thinking outputs\",\n \"content\": \"Output after thinking...\"\n}", "crumbs": [ "Dataset Formats", "Conversation" @@ -473,7 +473,7 @@ "href": "docs/dataset-formats/conversation.html#chat_template", "title": "Conversation", "section": "", - "text": "Chat Template strategy uses a jinja2 template that converts a list of messages into a prompt. Support using tokenizer’s template, a supported template, or custom jinja2.\n\n\ndata.jsonl\n\n{\"messages\": [{\"role\": \"...\", \"content\": \"...\"}, {\"role\": \"...\", \"content\": \"...\"}, ...]}\n\nSee configs for full configs and supported templates.\n\n\nMost configs can be adapted as follows:\n# old\nchat_template: chatml\ndatasets:\n - path: ...\n type: sharegpt\n conversation: chatml\n\n# new (if using tokenizer's chat_template)\ndatasets:\n - path: ...\n type: chat_template\n\n field_messages: conversations\n message_property_mappings:\n role: from\n content: value\n\n# new (if setting a new chat_template like chatml, gemma, etc)\nchat_template: chatml\ndatasets:\n - path: ...\n type: chat_template\n\n field_messages: conversations\n message_property_mappings:\n role: from\n content: value\nWe recommend checking the below examples for other usecases.\n\n\n\n\n\n(Legacy) Using the default chat template in the tokenizer_config.json on OpenAI messages format, training on only last message.\ndatasets:\n - path: ...\n type: chat_template\n roles_to_train:\n train_on_eos:\n\n\n\n\n\n\nTip\n\n\n\nIf you receive an error like “chat_template choice is tokenizer_default but tokenizer’s chat_template is null.”, it means the tokenizer does not have a default chat_template. Follow the examples below instead to set a custom chat_template.\n\n\n\n\n\nUsing the gemma chat template to override the tokenizer_config.json’s chat template on OpenAI messages format, training on all assistant messages.\nchat_template: gemma # this overwrites the tokenizer's chat_template\ndatasets:\n - path: ...\n type: chat_template\n roles_to_train: [\"assistant\"] # default value\n\n\n\n\n\n\nNote\n\n\n\nIf you want to use built-in chat_template, use chat_template: tokenizer_default (this is set by default).\n\n\n\n\n\nUsing the tokenizer_config.json’s chat template or chatml as fallback if the former’s chat template does not exist, on OpenAI messages format, training on all assistant messages.\nchat_template: tokenizer_default_fallback_chatml # this overwrites the tokenizer's chat_template\ndatasets:\n - path: ...\n type: chat_template\n\n\n\nUsing a custom jinja template on OpenAI messages format, training on all assistant messages.\n# chat_template: jinja # `jinja` will be implied if the `chat_template_jinja` is set and this field is empty\nchat_template_jinja: \"{{ bos_token }}{% for message in messages %}{% if (message['role'] == 'system') %}{{'<|system|>' + '\\n' + message['content'] + '<|end|>' + '\\n'}}{% elif (message['role'] == 'user') %}{{'<|user|>' + '\\n' + message['content'] + '<|end|>' + '\\n' + '<|assistant|>' + '\\n'}}{% elif message['role'] == 'assistant' %}{{message['content'] + '<|end|>' + '\\n'}}{% endif %}{% endfor %}\"\n\ndatasets:\n - path: ...\n type: chat_template\n\n\n\n\n\n\nImportant\n\n\n\nPlease make sure that your tokenizer.eos_token is same as EOS (End-of-Sequence) token in template. Otherwise, set eos_token under special_tokens:.\n\n\n\n\n\n\nIf you are using a template that has a different EOT (End-of-Turn) token from EOS token or multiple EOT tokens (like Mistral V7 Tekken), set the eot_tokens: config. The handling of EOT tokens follows train_on_eos: which defaults to turn.\n\neot_tokens:\n - \"[/INST]\"\n # - \"[/SYSTEM_PROMPT]\"\n\ndatasets:\n - path: ...\n type: chat_template\n\n # optional\n train_on_eot: turn # defaults read from train_on_eos (which defaults to turn)\n\n\n\n\n\n\nTip\n\n\n\nSee config documentation for detailed explanations of “turn”, “last”, and “all” options for training on tokens.\n\n\n\n\n\n\n\n\nNote\n\n\n\nUsing eot_tokens requires each token that exists in chat_template to be a single token in the tokenizer. Otherwise, the tokenizer will split the token and cause unexpected behavior.\nYou can add those tokens as new tokens under tokens: or (recommended) override unused added_tokens via added_tokens_overrides:. See config for more details.\n\n\n\nContinuing from the previous example, if you want to train on all EOT token trainable turns but only last EOS token, set train_on_eos: last.\n\neot_tokens:\n - \"[/INST]\"\n # ...\n\ndatasets:\n - path: ...\n type: chat_template\n\n train_on_eos: last\n train_on_eot: turn\n\n\n\n\n\n\nTip\n\n\n\nIf EOS token only appears at the end of a prompt, train_on_eos: last is equivalent to train_on_eos: turn. Therefore, generally, you can leave them to their defaults and omit them.\n\n\n\n\n\nInstead of passing tools via the system prompt, an alternative method would be to have the tools in a separate column and loaded via chat_template to let the template dynamically build it.\n{\n \"tools\": [\n {\n \"type\": \"...\",\n \"function\": {\n \"name\": \"...\",\n \"description\": \"...\",\n \"parameters\": {\n \"type\": \"...\",\n \"properties\": {\n // ...\n },\n \"required\": [\"...\"],\n },\n },\n },\n ],\n \"messages\": [\n // ...\n {\n \"role\": \"assistant\", // call the function via assistant\n \"tool_calls\": [\n {\n \"id\": \"...\", // required only for mistral\n \"type\": \"function\",\n \"function\": {\n \"name\": \"...\",\n \"arguments\": {\n \"...\": \"...\",\n }\n }\n }\n ]\n },\n {\n \"role\": \"tool\",\n \"tool_call_id\": \"...\", // required only for mistral\n \"name\": \"...\",\n \"content\": \"...\"\n },\n ],\n}\n\n\n\n\n\n\nNote\n\n\n\nTools need to follow JSON schema.\n\n\n\n\n\n\n\n\nWarning\n\n\n\nIf you have tool arguments with same name but different dtypes (like \"time\": string and \"time\": number), please save arguments: as JSON string to prevent datasets from having casting issues.\n\"arguments\": \"{\\\"...\\\": \\\"...\\\"}\"\n\n\nExample config for Llama4:\nchat_template: llama4\ndatasets:\n - path: Nanobit/text-tools-2k-test\n type: chat_template\n # field_tools: tools # default is `tools`\n\n\n\n\n\n\nTip\n\n\n\nLook into the chat_template you are using to see if it supports tools and what the expected role is for the tool answer. In the example above, the tool answer is expected to be in the tool or ipython role for llama4 template.\n\n\n\n\n\n(Advanced) Using fine-grained control over tokens and turns to train in a conversation\nFor a data sample that looks like:\n\n\ndata.jsonl\n\n{\n \"conversations\": [\n {\"from\": \"system\", \"value\": \"You are an AI assistant.\", \"train\": false},\n {\"from\": \"human\", \"value\": \"Hello\", \"train\": false},\n {\"from\": \"assistant\", \"value\": \"Hello\", \"train\": true},\n {\"from\": \"human\", \"value\": \"How are you?\", \"train\": true},\n {\n \"from\": \"assistant\",\n \"value\": \"I'm doing very well, thank you!\",\n \"train_detail\": [\n {\"begin_offset\": 0, \"end_offset\": 8, \"train\": false},\n {\"begin_offset\": 9, \"end_offset\": 18, \"train\": true},\n {\"begin_offset\": 19, \"end_offset\": 30, \"train\": false},\n ],\n },\n {\n \"from\": \"human\",\n \"value\": \"I'm doing very well, thank you!\",\n \"train\": true,\n },\n {\"from\": \"assistant\", \"value\": \"Hi there!\", \"train\": true}\n ]\n}\n\nThe configuration would look like:\ndatasets:\n - path: ...\n type: chat_template\n chat_template: tokenizer_default\n field_messages: conversations\n message_property_mappings:\n role: from\n content: value\n roles_to_train: []\n train_on_eos: turn\n message_field_training: train\n message_field_training_detail: train_detail\n\n\n\n\n\n\nTip\n\n\n\nIt is not necessary to set both message_field_training and message_field_training_detail at once.\n\n\n\n\n\n(For Qwen3 template only) Enable reasoning split, where the reasoning is split from the content and passed as a separate field into the template.\ndatasets:\n - path: ...\n type: chat_template\n chat_template: qwen3\n split_thinking: true\nFor example, a content can look like:\n{\n \"content\": \"<think>Some thinking outputs</think>Output after thinking.\"\n}\nAfter split, it will look like:\n{\n \"reasoning_content\": \"Some thinking outputs\",\n \"content\": \"Output after thinking...\"\n}", + "text": "Chat Template strategy uses a jinja2 template that converts a list of messages into a prompt. Support using tokenizer’s template, a supported template, or custom jinja2.\n\n\ndata.jsonl\n\n{\"messages\": [{\"role\": \"...\", \"content\": \"...\"}, {\"role\": \"...\", \"content\": \"...\"}, ...]}\n\nSee configs for full configs and supported templates.\n\n\nMost configs can be adapted as follows:\n# old\nchat_template: chatml\ndatasets:\n - path: ...\n type: sharegpt\n conversation: chatml\n\n# new (if using tokenizer's chat_template)\ndatasets:\n - path: ...\n type: chat_template\n\n field_messages: conversations\n message_property_mappings:\n role: from\n content: value\n\n# new (if setting a new chat_template like chatml, gemma, etc)\nchat_template: chatml\ndatasets:\n - path: ...\n type: chat_template\n\n field_messages: conversations\n message_property_mappings:\n role: from\n content: value\nWe recommend checking the below examples for other usecases.\n\n\n\n\n\n(Legacy) Using the default chat template in the tokenizer_config.json on OpenAI messages format, training on only last message.\ndatasets:\n - path: ...\n type: chat_template\n roles_to_train:\n train_on_eos:\n\n\n\n\n\n\nTip\n\n\n\nIf you receive an error like “chat_template choice is tokenizer_default but tokenizer’s chat_template is null.”, it means the tokenizer does not have a default chat_template. Follow the examples below instead to set a custom chat_template.\n\n\n\n\n\nUsing the gemma chat template to override the tokenizer_config.json’s chat template on OpenAI messages format, training on all assistant messages.\nchat_template: gemma # this overwrites the tokenizer's chat_template\ndatasets:\n - path: ...\n type: chat_template\n roles_to_train: [\"assistant\"] # default value\n\n\n\n\n\n\nNote\n\n\n\nIf you want to use built-in chat_template, use chat_template: tokenizer_default (this is set by default).\n\n\n\n\n\nUsing the tokenizer_config.json’s chat template or chatml as fallback if the former’s chat template does not exist, on OpenAI messages format, training on all assistant messages.\nchat_template: tokenizer_default_fallback_chatml # this overwrites the tokenizer's chat_template\ndatasets:\n - path: ...\n type: chat_template\n\n\n\nUsing a custom jinja template on OpenAI messages format, training on all assistant messages.\n# chat_template: jinja # `jinja` will be implied if the `chat_template_jinja` is set and this field is empty\nchat_template_jinja: \"{{ bos_token }}{% for message in messages %}{% if (message['role'] == 'system') %}{{'<|system|>' + '\\n' + message['content'] + '<|end|>' + '\\n'}}{% elif (message['role'] == 'user') %}{{'<|user|>' + '\\n' + message['content'] + '<|end|>' + '\\n' + '<|assistant|>' + '\\n'}}{% elif message['role'] == 'assistant' %}{{message['content'] + '<|end|>' + '\\n'}}{% endif %}{% endfor %}\"\n\ndatasets:\n - path: ...\n type: chat_template\n\n\n\n\n\n\nImportant\n\n\n\nPlease make sure that your tokenizer.eos_token is same as EOS (End-of-Sequence) token in template. Otherwise, set eos_token under special_tokens:.\n\n\n\n\n\n\nIf you are using a template that has a different EOT (End-of-Turn) token from EOS token or multiple EOT tokens (like Mistral V7 Tekken), set the eot_tokens: config. The handling of EOT tokens follows train_on_eos: which defaults to turn.\n\neot_tokens:\n - \"[/INST]\"\n # - \"[/SYSTEM_PROMPT]\"\n\ndatasets:\n - path: ...\n type: chat_template\n\n # optional\n train_on_eot: turn # defaults read from train_on_eos (which defaults to turn)\n\n\n\n\n\n\nTip\n\n\n\nSee config documentation for detailed explanations of “turn”, “last”, and “all” options for training on tokens.\n\n\n\n\n\n\n\n\nNote\n\n\n\nUsing eot_tokens requires each token that exists in chat_template to be a single token in the tokenizer. Otherwise, the tokenizer will split the token and cause unexpected behavior.\nYou can add those tokens as new tokens under tokens: or (recommended) override unused added_tokens via added_tokens_overrides:. See config for more details.\n\n\n\nContinuing from the previous example, if you want to train on all EOT token trainable turns but only last EOS token, set train_on_eos: last.\n\neot_tokens:\n - \"[/INST]\"\n # ...\n\ndatasets:\n - path: ...\n type: chat_template\n\n train_on_eos: last\n train_on_eot: turn\n\n\n\n\n\n\nTip\n\n\n\nIf EOS token only appears at the end of a prompt, train_on_eos: last is equivalent to train_on_eos: turn. Therefore, generally, you can leave them to their defaults and omit them.\n\n\n\n\n\nInstead of passing tools via the system prompt, an alternative method would be to have the tools in a separate column and loaded via chat_template to let the template dynamically build it.\n{\n \"tools\": [\n {\n \"type\": \"...\",\n \"function\": {\n \"name\": \"...\",\n \"description\": \"...\",\n \"parameters\": {\n \"type\": \"...\",\n \"properties\": {\n // ...\n },\n \"required\": [\"...\"],\n },\n },\n },\n ],\n \"messages\": [\n // ...\n {\n \"role\": \"assistant\", // call the function via assistant\n \"tool_calls\": [\n {\n \"id\": \"...\", // required only for mistral\n \"type\": \"function\",\n \"function\": {\n \"name\": \"...\",\n \"arguments\": {\n \"...\": \"...\",\n }\n }\n }\n ]\n },\n {\n \"role\": \"tool\",\n \"tool_call_id\": \"...\", // required only for mistral\n \"name\": \"...\",\n \"content\": \"...\"\n },\n ],\n}\n\n\n\n\n\n\nNote\n\n\n\nTools need to follow JSON schema.\n\n\n\n\n\n\n\n\nWarning\n\n\n\nIf you have tool arguments with same name but different dtypes (like \"time\": string and \"time\": number), please save arguments: as JSON string to prevent datasets from having casting issues.\n\"arguments\": \"{\\\"...\\\": \\\"...\\\"}\"\nThe same is applicable for tool parameters.\n\"parameters\": \"{\\\"...\\\": \\\"...\\\"}\"\n\n\nExample config for Llama4:\nchat_template: llama4\ndatasets:\n - path: Nanobit/text-tools-2k-test\n type: chat_template\n # field_tools: tools # default is `tools`\n\n\n\n\n\n\nTip\n\n\n\nLook into the chat_template you are using to see if it supports tools and what the expected role is for the tool answer. In the example above, the tool answer is expected to be in the tool or ipython role for llama4 template.\n\n\n\n\n\n(Advanced) Using fine-grained control over tokens and turns to train in a conversation\nFor a data sample that looks like:\n\n\ndata.jsonl\n\n{\n \"conversations\": [\n {\"from\": \"system\", \"value\": \"You are an AI assistant.\", \"train\": false},\n {\"from\": \"human\", \"value\": \"Hello\", \"train\": false},\n {\"from\": \"assistant\", \"value\": \"Hello\", \"train\": true},\n {\"from\": \"human\", \"value\": \"How are you?\", \"train\": true},\n {\n \"from\": \"assistant\",\n \"value\": \"I'm doing very well, thank you!\",\n \"train_detail\": [\n {\"begin_offset\": 0, \"end_offset\": 8, \"train\": false},\n {\"begin_offset\": 9, \"end_offset\": 18, \"train\": true},\n {\"begin_offset\": 19, \"end_offset\": 30, \"train\": false},\n ],\n },\n {\n \"from\": \"human\",\n \"value\": \"I'm doing very well, thank you!\",\n \"train\": true,\n },\n {\"from\": \"assistant\", \"value\": \"Hi there!\", \"train\": true}\n ]\n}\n\nThe configuration would look like:\ndatasets:\n - path: ...\n type: chat_template\n chat_template: tokenizer_default\n field_messages: conversations\n message_property_mappings:\n role: from\n content: value\n roles_to_train: []\n train_on_eos: turn\n message_field_training: train\n message_field_training_detail: train_detail\n\n\n\n\n\n\nTip\n\n\n\nIt is not necessary to set both message_field_training and message_field_training_detail at once.\n\n\n\n\n\n(For Qwen3 template only) Enable reasoning split, where the reasoning is split from the content and passed as a separate field into the template.\ndatasets:\n - path: ...\n type: chat_template\n chat_template: qwen3\n split_thinking: true\nFor example, a content can look like:\n{\n \"content\": \"<think>Some thinking outputs</think>Output after thinking.\"\n}\nAfter split, it will look like:\n{\n \"reasoning_content\": \"Some thinking outputs\",\n \"content\": \"Output after thinking...\"\n}", "crumbs": [ "Dataset Formats", "Conversation" diff --git a/sitemap.xml b/sitemap.xml index d073ca984..08123fdb9 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -2,798 +2,798 @@ https://docs.axolotl.ai/src/axolotl/integrations/cut_cross_entropy/ACKNOWLEDGEMENTS.html - 2025-11-10T14:37:58.867Z + 2025-11-11T02:04:36.805Z https://docs.axolotl.ai/docs/mac.html - 2025-11-10T14:37:58.845Z + 2025-11-11T02:04:36.782Z https://docs.axolotl.ai/docs/cli.html - 2025-11-10T14:37:58.841Z + 2025-11-11T02:04:36.778Z https://docs.axolotl.ai/docs/nccl.html - 2025-11-10T14:37:58.845Z + 2025-11-11T02:04:36.782Z https://docs.axolotl.ai/docs/getting-started.html - 2025-11-10T14:37:58.842Z + 2025-11-11T02:04:36.779Z https://docs.axolotl.ai/docs/lr_groups.html - 2025-11-10T14:37:58.845Z + 2025-11-11T02:04:36.782Z https://docs.axolotl.ai/docs/qat.html - 2025-11-10T14:37:58.845Z + 2025-11-11T02:04:36.782Z https://docs.axolotl.ai/docs/multipack.html - 2025-11-10T14:37:58.845Z + 2025-11-11T02:04:36.782Z https://docs.axolotl.ai/docs/streaming.html - 2025-11-10T14:37:58.846Z + 2025-11-11T02:04:36.783Z https://docs.axolotl.ai/docs/lora_optims.html - 2025-11-10T14:37:58.844Z + 2025-11-11T02:04:36.782Z https://docs.axolotl.ai/docs/amd_hpc.html - 2025-11-10T14:37:58.841Z + 2025-11-11T02:04:36.778Z https://docs.axolotl.ai/docs/debugging.html - 2025-11-10T14:37:58.842Z + 2025-11-11T02:04:36.779Z https://docs.axolotl.ai/docs/dataset-formats/conversation.html - 2025-11-10T14:37:58.841Z + 2025-11-11T02:04:36.778Z https://docs.axolotl.ai/docs/dataset-formats/inst_tune.html - 2025-11-10T14:37:58.841Z + 2025-11-11T02:04:36.778Z https://docs.axolotl.ai/docs/dataset-formats/index.html - 2025-11-10T14:37:58.841Z + 2025-11-11T02:04:36.778Z https://docs.axolotl.ai/docs/config-reference.html - 2025-11-10T14:41:46.431Z + 2025-11-11T02:08:54.487Z https://docs.axolotl.ai/docs/multimodal.html - 2025-11-10T14:37:58.845Z + 2025-11-11T02:04:36.782Z https://docs.axolotl.ai/docs/ray-integration.html - 2025-11-10T14:37:58.845Z + 2025-11-11T02:04:36.782Z https://docs.axolotl.ai/docs/faq.html - 2025-11-10T14:37:58.842Z + 2025-11-11T02:04:36.779Z https://docs.axolotl.ai/docs/dataset_preprocessing.html - 2025-11-10T14:37:58.841Z + 2025-11-11T02:04:36.779Z https://docs.axolotl.ai/docs/torchao.html - 2025-11-10T14:37:58.846Z + 2025-11-11T02:04:36.783Z https://docs.axolotl.ai/docs/optimizers.html - 2025-11-10T14:37:58.845Z + 2025-11-11T02:04:36.782Z https://docs.axolotl.ai/docs/api/utils.schedulers.html - 2025-11-10T14:41:31.364Z + 2025-11-11T02:08:37.904Z https://docs.axolotl.ai/docs/api/cli.utils.sweeps.html - 2025-11-10T14:41:30.584Z + 2025-11-11T02:08:37.111Z https://docs.axolotl.ai/docs/api/datasets.html - 2025-11-10T14:41:30.185Z + 2025-11-11T02:08:36.708Z https://docs.axolotl.ai/docs/api/utils.tokenization.html - 2025-11-10T14:41:31.283Z + 2025-11-11T02:08:37.821Z https://docs.axolotl.ai/docs/api/loaders.tokenizer.html - 2025-11-10T14:41:30.699Z + 2025-11-11T02:08:37.228Z https://docs.axolotl.ai/docs/api/monkeypatch.llama_expand_mask.html - 2025-11-10T14:41:31.159Z + 2025-11-11T02:08:37.695Z https://docs.axolotl.ai/docs/api/monkeypatch.gradient_checkpointing.offload_cpu.html - 2025-11-10T14:41:31.243Z + 2025-11-11T02:08:37.780Z https://docs.axolotl.ai/docs/api/utils.data.sft.html - 2025-11-10T14:41:31.413Z + 2025-11-11T02:08:37.954Z https://docs.axolotl.ai/docs/api/monkeypatch.transformers_fa_utils.html - 2025-11-10T14:41:31.225Z + 2025-11-11T02:08:37.761Z https://docs.axolotl.ai/docs/api/loaders.patch_manager.html - 2025-11-10T14:41:30.719Z + 2025-11-11T02:08:37.249Z https://docs.axolotl.ai/docs/api/integrations.liger.args.html - 2025-11-10T14:41:31.729Z + 2025-11-11T02:08:38.276Z https://docs.axolotl.ai/docs/api/utils.schemas.peft.html - 2025-11-10T14:41:31.501Z + 2025-11-11T02:08:38.044Z https://docs.axolotl.ai/docs/api/prompt_strategies.pygmalion.html - 2025-11-10T14:41:30.908Z + 2025-11-11T02:08:37.440Z https://docs.axolotl.ai/docs/api/prompt_strategies.alpaca_instruct.html - 2025-11-10T14:41:30.828Z + 2025-11-11T02:08:37.359Z https://docs.axolotl.ai/docs/api/cli.cloud.base.html - 2025-11-10T14:41:30.540Z + 2025-11-11T02:08:37.067Z https://docs.axolotl.ai/docs/api/monkeypatch.gradient_checkpointing.offload_disk.html - 2025-11-10T14:41:31.275Z + 2025-11-11T02:08:37.813Z https://docs.axolotl.ai/docs/api/kernels.swiglu.html - 2025-11-10T14:41:31.131Z + 2025-11-11T02:08:37.665Z https://docs.axolotl.ai/docs/api/integrations.cut_cross_entropy.args.html - 2025-11-10T14:41:31.714Z + 2025-11-11T02:08:38.261Z https://docs.axolotl.ai/docs/api/prompt_strategies.kto.user_defined.html - 2025-11-10T14:41:30.973Z + 2025-11-11T02:08:37.506Z https://docs.axolotl.ai/docs/api/monkeypatch.utils.html - 2025-11-10T14:41:31.203Z + 2025-11-11T02:08:37.739Z https://docs.axolotl.ai/docs/api/core.builders.rl.html - 2025-11-10T14:41:30.282Z + 2025-11-11T02:08:36.807Z https://docs.axolotl.ai/docs/api/loaders.processor.html - 2025-11-10T14:41:30.701Z + 2025-11-11T02:08:37.230Z https://docs.axolotl.ai/docs/api/utils.callbacks.lisa.html - 2025-11-10T14:41:31.857Z + 2025-11-11T02:08:38.406Z https://docs.axolotl.ai/docs/api/core.training_args.html - 2025-11-10T14:41:30.298Z + 2025-11-11T02:08:36.822Z https://docs.axolotl.ai/docs/api/loaders.adapter.html - 2025-11-10T14:41:30.707Z + 2025-11-11T02:08:37.236Z https://docs.axolotl.ai/docs/api/cli.merge_sharded_fsdp_weights.html - 2025-11-10T14:41:30.512Z + 2025-11-11T02:08:37.038Z https://docs.axolotl.ai/docs/api/cli.train.html - 2025-11-10T14:41:30.398Z + 2025-11-11T02:08:36.923Z https://docs.axolotl.ai/docs/api/core.trainers.mixins.rng_state_loader.html - 2025-11-10T14:41:30.732Z + 2025-11-11T02:08:37.262Z https://docs.axolotl.ai/docs/api/prompt_strategies.completion.html - 2025-11-10T14:41:30.875Z + 2025-11-11T02:08:37.406Z https://docs.axolotl.ai/docs/api/prompt_strategies.stepwise_supervised.html - 2025-11-10T14:41:30.888Z + 2025-11-11T02:08:37.419Z https://docs.axolotl.ai/docs/api/monkeypatch.lora_kernels.html - 2025-11-10T14:41:31.193Z + 2025-11-11T02:08:37.729Z https://docs.axolotl.ai/docs/api/prompt_strategies.messages.chat.html - 2025-11-10T14:41:30.913Z + 2025-11-11T02:08:37.445Z https://docs.axolotl.ai/docs/api/prompt_strategies.user_defined.html - 2025-11-10T14:41:30.852Z + 2025-11-11T02:08:37.383Z https://docs.axolotl.ai/docs/api/core.chat.messages.html - 2025-11-10T14:41:30.327Z + 2025-11-11T02:08:36.851Z https://docs.axolotl.ai/docs/api/core.trainers.mixins.scheduler.html - 2025-11-10T14:41:30.740Z + 2025-11-11T02:08:37.270Z https://docs.axolotl.ai/docs/api/prompt_strategies.dpo.user_defined.html - 2025-11-10T14:41:30.950Z + 2025-11-11T02:08:37.482Z https://docs.axolotl.ai/docs/api/prompt_strategies.kto.llama3.html - 2025-11-10T14:41:30.962Z + 2025-11-11T02:08:37.494Z https://docs.axolotl.ai/docs/api/utils.schemas.integrations.html - 2025-11-10T14:41:31.528Z + 2025-11-11T02:08:38.072Z https://docs.axolotl.ai/docs/api/convert.html - 2025-11-10T14:41:30.201Z + 2025-11-11T02:08:36.725Z https://docs.axolotl.ai/docs/api/prompt_strategies.dpo.passthrough.html - 2025-11-10T14:41:30.952Z + 2025-11-11T02:08:37.484Z https://docs.axolotl.ai/docs/api/utils.schemas.config.html - 2025-11-10T14:41:31.452Z + 2025-11-11T02:08:37.994Z https://docs.axolotl.ai/docs/api/utils.schemas.enums.html - 2025-11-10T14:41:31.539Z + 2025-11-11T02:08:38.082Z https://docs.axolotl.ai/docs/api/monkeypatch.btlm_attn_hijack_flash.html - 2025-11-10T14:41:31.205Z + 2025-11-11T02:08:37.741Z https://docs.axolotl.ai/docs/api/prompt_strategies.dpo.chat_template.html - 2025-11-10T14:41:30.921Z + 2025-11-11T02:08:37.453Z https://docs.axolotl.ai/docs/api/core.trainers.grpo.trainer.html - 2025-11-10T14:41:30.661Z + 2025-11-11T02:08:37.189Z https://docs.axolotl.ai/docs/api/integrations.lm_eval.args.html - 2025-11-10T14:41:31.733Z + 2025-11-11T02:08:38.280Z https://docs.axolotl.ai/docs/api/utils.collators.core.html - 2025-11-10T14:41:31.762Z + 2025-11-11T02:08:38.309Z https://docs.axolotl.ai/docs/api/core.chat.format.shared.html - 2025-11-10T14:41:30.332Z + 2025-11-11T02:08:36.857Z https://docs.axolotl.ai/docs/api/prompt_strategies.orpo.chat_template.html - 2025-11-10T14:41:30.998Z + 2025-11-11T02:08:37.531Z https://docs.axolotl.ai/docs/api/utils.samplers.multipack.html - 2025-11-10T14:41:31.843Z + 2025-11-11T02:08:38.392Z https://docs.axolotl.ai/docs/api/utils.callbacks.qat.html - 2025-11-10T14:41:31.874Z + 2025-11-11T02:08:38.423Z https://docs.axolotl.ai/docs/api/prompt_strategies.chat_template.html - 2025-11-10T14:41:30.810Z + 2025-11-11T02:08:37.340Z https://docs.axolotl.ai/docs/api/utils.schemas.multimodal.html - 2025-11-10T14:41:31.511Z + 2025-11-11T02:08:38.054Z https://docs.axolotl.ai/docs/api/utils.callbacks.comet_.html - 2025-11-10T14:41:31.866Z + 2025-11-11T02:08:38.414Z https://docs.axolotl.ai/docs/api/prompt_strategies.base.html - 2025-11-10T14:41:30.770Z + 2025-11-11T02:08:37.301Z https://docs.axolotl.ai/docs/api/kernels.utils.html - 2025-11-10T14:41:31.141Z + 2025-11-11T02:08:37.676Z https://docs.axolotl.ai/docs/api/cli.merge_lora.html - 2025-11-10T14:41:30.498Z + 2025-11-11T02:08:37.024Z https://docs.axolotl.ai/docs/api/cli.utils.html - 2025-11-10T14:41:30.550Z + 2025-11-11T02:08:37.077Z https://docs.axolotl.ai/docs/api/utils.ctx_managers.sequence_parallel.html - 2025-11-10T14:41:30.768Z + 2025-11-11T02:08:37.299Z https://docs.axolotl.ai/docs/api/index.html - 2025-11-10T14:41:30.087Z + 2025-11-11T02:08:36.610Z https://docs.axolotl.ai/docs/api/prompt_strategies.dpo.llama3.html - 2025-11-10T14:41:30.934Z + 2025-11-11T02:08:37.466Z https://docs.axolotl.ai/docs/api/monkeypatch.mixtral.html - 2025-11-10T14:41:31.239Z + 2025-11-11T02:08:37.776Z https://docs.axolotl.ai/docs/api/prompt_strategies.orcamini.html - 2025-11-10T14:41:30.900Z + 2025-11-11T02:08:37.432Z https://docs.axolotl.ai/docs/api/core.trainers.grpo.sampler.html - 2025-11-10T14:41:30.675Z + 2025-11-11T02:08:37.204Z https://docs.axolotl.ai/docs/api/utils.lora.html - 2025-11-10T14:41:31.291Z + 2025-11-11T02:08:37.829Z https://docs.axolotl.ai/docs/api/core.trainers.mixins.optimizer.html - 2025-11-10T14:41:30.728Z + 2025-11-11T02:08:37.258Z https://docs.axolotl.ai/docs/api/cli.config.html - 2025-11-10T14:41:30.465Z + 2025-11-11T02:08:36.991Z https://docs.axolotl.ai/docs/api/monkeypatch.multipack.html - 2025-11-10T14:41:31.153Z + 2025-11-11T02:08:37.689Z https://docs.axolotl.ai/docs/api/utils.collators.batching.html - 2025-11-10T14:41:31.784Z + 2025-11-11T02:08:38.332Z https://docs.axolotl.ai/docs/api/utils.quantization.html - 2025-11-10T14:41:31.437Z + 2025-11-11T02:08:37.978Z https://docs.axolotl.ai/docs/api/utils.dict.html - 2025-11-10T14:41:31.395Z + 2025-11-11T02:08:37.935Z https://docs.axolotl.ai/docs/api/kernels.quantize.html - 2025-11-10T14:41:31.139Z + 2025-11-11T02:08:37.675Z https://docs.axolotl.ai/docs/api/utils.schemas.training.html - 2025-11-10T14:41:31.469Z + 2025-11-11T02:08:38.011Z https://docs.axolotl.ai/docs/api/train.html - 2025-11-10T14:41:30.165Z + 2025-11-11T02:08:36.688Z https://docs.axolotl.ai/docs/api/core.datasets.transforms.chat_builder.html - 2025-11-10T14:41:30.348Z + 2025-11-11T02:08:36.872Z https://docs.axolotl.ai/docs/inference.html - 2025-11-10T14:37:58.844Z + 2025-11-11T02:04:36.781Z https://docs.axolotl.ai/FAQS.html - 2025-11-10T14:37:58.839Z + 2025-11-11T02:04:36.776Z https://docs.axolotl.ai/examples/colab-notebooks/colab-axolotl-example.html - 2025-11-10T14:37:58.850Z + 2025-11-11T02:04:36.787Z https://docs.axolotl.ai/index.html - 2025-11-10T14:37:58.862Z + 2025-11-11T02:04:36.800Z https://docs.axolotl.ai/docs/custom_integrations.html - 2025-11-10T14:37:58.841Z + 2025-11-11T02:04:36.778Z https://docs.axolotl.ai/docs/api/utils.schemas.utils.html - 2025-11-10T14:41:31.545Z + 2025-11-11T02:08:38.089Z https://docs.axolotl.ai/docs/api/kernels.geglu.html - 2025-11-10T14:41:31.119Z + 2025-11-11T02:08:37.653Z https://docs.axolotl.ai/docs/api/core.builders.causal.html - 2025-11-10T14:41:30.277Z + 2025-11-11T02:08:36.801Z https://docs.axolotl.ai/docs/api/core.trainers.mamba.html - 2025-11-10T14:41:30.640Z + 2025-11-11T02:08:37.168Z https://docs.axolotl.ai/docs/api/prompt_strategies.bradley_terry.llama3.html - 2025-11-10T14:41:31.002Z + 2025-11-11T02:08:37.536Z https://docs.axolotl.ai/docs/api/core.datasets.chat.html - 2025-11-10T14:41:30.338Z + 2025-11-11T02:08:36.863Z https://docs.axolotl.ai/docs/api/utils.collators.mm_chat.html - 2025-11-10T14:41:31.794Z + 2025-11-11T02:08:38.342Z https://docs.axolotl.ai/docs/api/prompt_strategies.llama2_chat.html - 2025-11-10T14:41:30.868Z + 2025-11-11T02:08:37.399Z https://docs.axolotl.ai/docs/api/common.const.html - 2025-11-10T14:41:31.741Z + 2025-11-11T02:08:38.288Z https://docs.axolotl.ai/docs/api/cli.quantize.html - 2025-11-10T14:41:30.528Z + 2025-11-11T02:08:37.054Z https://docs.axolotl.ai/docs/api/utils.trainer.html - 2025-11-10T14:41:31.332Z + 2025-11-11T02:08:37.871Z https://docs.axolotl.ai/docs/api/cli.delinearize_llama4.html - 2025-11-10T14:41:30.471Z + 2025-11-11T02:08:36.997Z https://docs.axolotl.ai/docs/api/evaluate.html - 2025-11-10T14:41:30.177Z + 2025-11-11T02:08:36.701Z https://docs.axolotl.ai/docs/api/monkeypatch.mistral_attn_hijack_flash.html - 2025-11-10T14:41:31.151Z + 2025-11-11T02:08:37.687Z https://docs.axolotl.ai/docs/api/loaders.model.html - 2025-11-10T14:41:30.689Z + 2025-11-11T02:08:37.218Z https://docs.axolotl.ai/docs/api/utils.distributed.html - 2025-11-10T14:41:31.389Z + 2025-11-11T02:08:37.929Z https://docs.axolotl.ai/docs/api/utils.model_shard_quant.html - 2025-11-10T14:41:31.298Z + 2025-11-11T02:08:37.836Z https://docs.axolotl.ai/docs/api/kernels.lora.html - 2025-11-10T14:41:31.106Z + 2025-11-11T02:08:37.640Z https://docs.axolotl.ai/docs/api/cli.main.html - 2025-11-10T14:41:30.388Z + 2025-11-11T02:08:36.913Z https://docs.axolotl.ai/docs/api/integrations.spectrum.args.html - 2025-11-10T14:41:31.737Z + 2025-11-11T02:08:38.284Z https://docs.axolotl.ai/docs/api/utils.optimizers.adopt.html - 2025-11-10T14:41:31.404Z + 2025-11-11T02:08:37.945Z https://docs.axolotl.ai/docs/api/cli.cloud.modal_.html - 2025-11-10T14:41:30.548Z + 2025-11-11T02:08:37.075Z https://docs.axolotl.ai/docs/api/monkeypatch.llama_attn_hijack_flash.html - 2025-11-10T14:41:31.148Z + 2025-11-11T02:08:37.683Z https://docs.axolotl.ai/docs/api/core.builders.base.html - 2025-11-10T14:41:30.271Z + 2025-11-11T02:08:36.795Z https://docs.axolotl.ai/docs/api/utils.schemas.trl.html - 2025-11-10T14:41:31.505Z + 2025-11-11T02:08:38.048Z https://docs.axolotl.ai/docs/api/cli.utils.args.html - 2025-11-10T14:41:30.564Z + 2025-11-11T02:08:37.091Z https://docs.axolotl.ai/docs/api/core.trainers.base.html - 2025-11-10T14:41:30.615Z + 2025-11-11T02:08:37.143Z https://docs.axolotl.ai/docs/api/monkeypatch.llama_patch_multipack.html - 2025-11-10T14:41:31.206Z + 2025-11-11T02:08:37.743Z https://docs.axolotl.ai/docs/api/monkeypatch.llama_attn_hijack_xformers.html - 2025-11-10T14:41:31.150Z + 2025-11-11T02:08:37.685Z https://docs.axolotl.ai/docs/api/utils.schemas.model.html - 2025-11-10T14:41:31.460Z + 2025-11-11T02:08:38.002Z https://docs.axolotl.ai/docs/api/prompt_strategies.kto.chatml.html - 2025-11-10T14:41:30.971Z + 2025-11-11T02:08:37.504Z https://docs.axolotl.ai/docs/api/utils.callbacks.mlflow_.html - 2025-11-10T14:41:31.862Z + 2025-11-11T02:08:38.410Z https://docs.axolotl.ai/docs/api/common.datasets.html - 2025-11-10T14:41:31.759Z + 2025-11-11T02:08:38.306Z https://docs.axolotl.ai/docs/api/utils.schemas.datasets.html - 2025-11-10T14:41:31.490Z + 2025-11-11T02:08:38.033Z https://docs.axolotl.ai/docs/api/cli.utils.fetch.html - 2025-11-10T14:41:30.570Z + 2025-11-11T02:08:37.097Z https://docs.axolotl.ai/docs/api/prompt_strategies.dpo.chatml.html - 2025-11-10T14:41:30.946Z + 2025-11-11T02:08:37.479Z https://docs.axolotl.ai/docs/api/monkeypatch.relora.html - 2025-11-10T14:41:31.158Z + 2025-11-11T02:08:37.693Z https://docs.axolotl.ai/docs/api/cli.evaluate.html - 2025-11-10T14:41:30.408Z + 2025-11-11T02:08:36.933Z https://docs.axolotl.ai/docs/api/prompt_strategies.dpo.zephyr.html - 2025-11-10T14:41:30.948Z + 2025-11-11T02:08:37.480Z https://docs.axolotl.ai/docs/api/core.trainers.utils.html - 2025-11-10T14:41:30.677Z + 2025-11-11T02:08:37.206Z https://docs.axolotl.ai/docs/api/prompt_strategies.alpaca_w_system.html - 2025-11-10T14:41:30.842Z + 2025-11-11T02:08:37.373Z https://docs.axolotl.ai/docs/api/utils.chat_templates.html - 2025-11-10T14:41:31.285Z + 2025-11-11T02:08:37.823Z https://docs.axolotl.ai/docs/api/utils.data.streaming.html - 2025-11-10T14:41:31.406Z + 2025-11-11T02:08:37.947Z https://docs.axolotl.ai/docs/api/utils.bench.html - 2025-11-10T14:41:31.302Z + 2025-11-11T02:08:37.840Z https://docs.axolotl.ai/docs/api/common.architectures.html - 2025-11-10T14:41:31.739Z + 2025-11-11T02:08:38.286Z https://docs.axolotl.ai/docs/api/cli.checks.html - 2025-11-10T14:41:30.444Z + 2025-11-11T02:08:36.969Z https://docs.axolotl.ai/docs/api/core.trainers.dpo.trainer.html - 2025-11-10T14:41:30.648Z + 2025-11-11T02:08:37.176Z https://docs.axolotl.ai/docs/api/integrations.base.html - 2025-11-10T14:41:31.710Z + 2025-11-11T02:08:38.257Z https://docs.axolotl.ai/docs/api/cli.utils.train.html - 2025-11-10T14:41:30.598Z + 2025-11-11T02:08:37.125Z https://docs.axolotl.ai/docs/api/utils.collators.mamba.html - 2025-11-10T14:41:31.789Z + 2025-11-11T02:08:38.337Z https://docs.axolotl.ai/docs/api/cli.art.html - 2025-11-10T14:41:30.436Z + 2025-11-11T02:08:36.962Z https://docs.axolotl.ai/docs/api/monkeypatch.trainer_fsdp_optim.html - 2025-11-10T14:41:31.217Z + 2025-11-11T02:08:37.754Z https://docs.axolotl.ai/docs/api/logging_config.html - 2025-11-10T14:41:30.263Z + 2025-11-11T02:08:36.787Z https://docs.axolotl.ai/docs/api/utils.freeze.html - 2025-11-10T14:41:31.311Z + 2025-11-11T02:08:37.850Z https://docs.axolotl.ai/docs/api/prompt_strategies.metharme.html - 2025-11-10T14:41:30.896Z + 2025-11-11T02:08:37.427Z https://docs.axolotl.ai/docs/api/prompt_strategies.alpaca_chat.html - 2025-11-10T14:41:30.826Z + 2025-11-11T02:08:37.357Z https://docs.axolotl.ai/docs/api/monkeypatch.stablelm_attn_hijack_flash.html - 2025-11-10T14:41:31.213Z + 2025-11-11T02:08:37.750Z https://docs.axolotl.ai/docs/api/models.mamba.modeling_mamba.html - 2025-11-10T14:41:31.760Z + 2025-11-11T02:08:38.308Z https://docs.axolotl.ai/docs/api/core.trainers.trl.html - 2025-11-10T14:41:30.633Z + 2025-11-11T02:08:37.161Z https://docs.axolotl.ai/docs/api/prompt_strategies.input_output.html - 2025-11-10T14:41:30.882Z + 2025-11-11T02:08:37.413Z https://docs.axolotl.ai/docs/api/loaders.constants.html - 2025-11-10T14:41:30.721Z + 2025-11-11T02:08:37.251Z https://docs.axolotl.ai/docs/api/monkeypatch.data.batch_dataset_fetcher.html - 2025-11-10T14:41:31.238Z + 2025-11-11T02:08:37.774Z https://docs.axolotl.ai/docs/api/cli.vllm_serve.html - 2025-11-10T14:41:30.536Z + 2025-11-11T02:08:37.063Z https://docs.axolotl.ai/docs/api/prompt_tokenizers.html - 2025-11-10T14:41:30.251Z + 2025-11-11T02:08:36.775Z https://docs.axolotl.ai/docs/api/cli.args.html - 2025-11-10T14:41:30.432Z + 2025-11-11T02:08:36.958Z https://docs.axolotl.ai/docs/api/cli.inference.html - 2025-11-10T14:41:30.488Z + 2025-11-11T02:08:37.014Z https://docs.axolotl.ai/docs/api/cli.utils.load.html - 2025-11-10T14:41:30.577Z + 2025-11-11T02:08:37.104Z https://docs.axolotl.ai/docs/api/cli.preprocess.html - 2025-11-10T14:41:30.522Z + 2025-11-11T02:08:37.048Z https://docs.axolotl.ai/docs/api/utils.callbacks.profiler.html - 2025-11-10T14:41:31.855Z + 2025-11-11T02:08:38.404Z https://docs.axolotl.ai/docs/api/utils.callbacks.perplexity.html - 2025-11-10T14:41:31.851Z + 2025-11-11T02:08:38.399Z https://docs.axolotl.ai/docs/api/core.chat.format.chatml.html - 2025-11-10T14:41:30.328Z + 2025-11-11T02:08:36.853Z https://docs.axolotl.ai/docs/api/integrations.grokfast.optimizer.html - 2025-11-10T14:41:31.715Z + 2025-11-11T02:08:38.263Z https://docs.axolotl.ai/docs/api/integrations.kd.trainer.html - 2025-11-10T14:41:31.725Z + 2025-11-11T02:08:38.272Z https://docs.axolotl.ai/docs/api/monkeypatch.unsloth_.html - 2025-11-10T14:41:31.227Z + 2025-11-11T02:08:37.763Z https://docs.axolotl.ai/docs/api/core.chat.format.llama3x.html - 2025-11-10T14:41:30.330Z + 2025-11-11T02:08:36.855Z https://docs.axolotl.ai/docs/reward_modelling.html - 2025-11-10T14:37:58.845Z + 2025-11-11T02:04:36.782Z https://docs.axolotl.ai/docs/quantize.html - 2025-11-10T14:37:58.845Z + 2025-11-11T02:04:36.782Z https://docs.axolotl.ai/docs/fsdp_qlora.html - 2025-11-10T14:37:58.842Z + 2025-11-11T02:04:36.779Z https://docs.axolotl.ai/docs/nd_parallelism.html - 2025-11-10T14:37:58.845Z + 2025-11-11T02:04:36.782Z https://docs.axolotl.ai/docs/batch_vs_grad.html - 2025-11-10T14:37:58.841Z + 2025-11-11T02:04:36.778Z https://docs.axolotl.ai/docs/multi-node.html - 2025-11-10T14:37:58.845Z + 2025-11-11T02:04:36.782Z https://docs.axolotl.ai/docs/rlhf.html - 2025-11-10T14:37:58.845Z + 2025-11-11T02:04:36.782Z https://docs.axolotl.ai/docs/dataset-formats/stepwise_supervised.html - 2025-11-10T14:37:58.841Z + 2025-11-11T02:04:36.778Z https://docs.axolotl.ai/docs/dataset-formats/pretraining.html - 2025-11-10T14:37:58.841Z + 2025-11-11T02:04:36.778Z https://docs.axolotl.ai/docs/dataset-formats/tokenized.html - 2025-11-10T14:37:58.841Z + 2025-11-11T02:04:36.778Z https://docs.axolotl.ai/docs/dataset-formats/template_free.html - 2025-11-10T14:37:58.841Z + 2025-11-11T02:04:36.778Z https://docs.axolotl.ai/docs/multi-gpu.html - 2025-11-10T14:37:58.845Z + 2025-11-11T02:04:36.782Z https://docs.axolotl.ai/docs/input_output.html - 2025-11-10T14:37:58.844Z + 2025-11-11T02:04:36.782Z https://docs.axolotl.ai/docs/docker.html - 2025-11-10T14:37:58.842Z + 2025-11-11T02:04:36.779Z https://docs.axolotl.ai/docs/gradient_checkpointing.html - 2025-11-10T14:37:58.842Z + 2025-11-11T02:04:36.779Z https://docs.axolotl.ai/docs/optimizations.html - 2025-11-10T14:37:58.845Z + 2025-11-11T02:04:36.782Z https://docs.axolotl.ai/docs/sequence_parallelism.html - 2025-11-10T14:37:58.845Z + 2025-11-11T02:04:36.783Z https://docs.axolotl.ai/docs/dataset_loading.html - 2025-11-10T14:37:58.841Z + 2025-11-11T02:04:36.778Z https://docs.axolotl.ai/docs/installation.html - 2025-11-10T14:37:58.844Z + 2025-11-11T02:04:36.782Z https://docs.axolotl.ai/docs/mixed_precision.html - 2025-11-10T14:37:58.845Z + 2025-11-11T02:04:36.782Z https://docs.axolotl.ai/docs/unsloth.html - 2025-11-10T14:37:58.846Z + 2025-11-11T02:04:36.783Z https://docs.axolotl.ai/src/axolotl/integrations/LICENSE.html - 2025-11-10T14:37:58.867Z + 2025-11-11T02:04:36.804Z