Fix bugs (#230)
* Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update llama.py * Update llama.py * Update llama.py * Update llama.py * CE * Update llama.py * Update llama.py * Update cross_entropy_loss.py * Update geglu.py * Update cross_entropy_loss.py * revert * Update llama.py * Update llama.py * norm * Update gemma.py * Update gemma.py * position_ids * Update gemma.py * Update gemma.py * pos * Update llama.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update cross_entropy_loss.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update llama.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update llama.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * revert * revert * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update llama.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update cross_entropy_loss.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update llama.py * Update llama.py * Update llama.py * Update llama.py * rope * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * llama * Update llama.py * gemma * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update save.py * RoPE * Update llama.py * Update llama.py * Update llama.py * Update gemma.py * correct_dtype * Update gemma.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Chat Templates * Update README.md * Update README.md * Update llama.py * DoRA * Update _utils.py * Update chat_templates.py * Update llama.py * Hotfix - fix DoRA, Gemma prompt template (#202) (#203) * Update save.py * saving * Update save.py * Update save.py * Update save.py * Update save.py * Update save.py * Update save.py * Update save.py * Update save.py * Update save.py * Update save.py * Update save.py * Update save.py * Update save.py * Update __init__.py * Update save.py * Update save.py * Update save.py * save * trainer * spaces * original * Gemma * Update pyproject.toml * Update mapper.py * Update fast_lora.py * FastGemmaModel * model_type * Update llama.py * Update llama.py * Update gemma.py * Update gemma.py * Update gemma.py * Update llama.py * Update llama.py * Update fast_lora.py * Update llama.py * Update llama.py * Update cross_entropy_loss.py * Update llama.py * Update llama.py * gemma * Update llama.py * Update llama.py * Update llama.py * Update llama.py * Update fast_lora.py * Update fast_lora.py * Fast CE Loss * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update llama.py * Update llama.py * Update llama.py * Update llama.py * CE * Update llama.py * Update llama.py * Update cross_entropy_loss.py * Update geglu.py * Update cross_entropy_loss.py * revert * Update llama.py * Update llama.py * norm * Update gemma.py * Update gemma.py * position_ids * Update gemma.py * Update gemma.py * pos * Update llama.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update cross_entropy_loss.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update llama.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update llama.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * revert * revert * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update llama.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update cross_entropy_loss.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update llama.py * Update llama.py * Update llama.py * Update llama.py * rope * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * llama * Update llama.py * gemma * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update save.py * RoPE * Update llama.py * Update llama.py * Update llama.py * Update gemma.py * correct_dtype * Update gemma.py * Update cross_entropy_loss.py * Update cross_entropy_loss.py * Chat Templates * Update README.md * Update README.md * Update llama.py * DoRA * Update _utils.py * Update chat_templates.py * Update pyproject.toml * Small fixes * Update pyproject.toml * Approx gelu * Update geglu.py * Approx gelu * Update llama.py * Update __init__.py * Update __init__.py * Update _utils.py * Update geglu.py * Update gemma.py * Update rms_layernorm.py * Update rms_layernorm.py * Update rms_layernorm.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Update gemma.py * Fix Gemma merging * Update rms_layernorm.py * Update gemma.py * Update pyproject.toml * Layernorms * Gemma precision * Update gemma.py * sqrt * Update gemma.py * Update save.py * RoPE and Gemma precision * Update rms_layernorm.py * Fix warning * Update chat_templates.py * Update chat_templates.py * Update save.py * Update save.py * Update save.py * Update chat_templates.py * Update llama.py * model_name * Update loader.py * Tokenizer overwritten
This commit is contained in:
parent
70f271b1d3
commit
1fcf9d4577
5 changed files with 34 additions and 9 deletions
|
|
@ -257,9 +257,9 @@ def get_chat_template(
|
||||||
assert("Unsloth: Can only map new tokens to EOS for now. Adding new tokens is not yet supported.")
|
assert("Unsloth: Can only map new tokens to EOS for now. Adding new tokens is not yet supported.")
|
||||||
pass
|
pass
|
||||||
|
|
||||||
if tokenizer.__class__.__name__.startswith("Gemma") and chat_template == "chatml":
|
# if tokenizer.__class__.__name__.startswith("Gemma") and chat_template == "chatml":
|
||||||
chat_template = "gemma_chatml"
|
# chat_template = "gemma_chatml"
|
||||||
pass
|
# pass
|
||||||
|
|
||||||
old_padding_side = tokenizer.padding_side
|
old_padding_side = tokenizer.padding_side
|
||||||
|
|
||||||
|
|
@ -298,8 +298,12 @@ def get_chat_template(
|
||||||
pass
|
pass
|
||||||
pass
|
pass
|
||||||
|
|
||||||
logger.warning_once(f"Unsloth: Will map {stop_word} to EOS = {tokenizer.eos_token}.")
|
if not stop_word in token_mapping.values():
|
||||||
string_vocab = string_vocab.replace(tokenizer.eos_token, stop_word)
|
# Do not map 107 = <|im_end|> and 1 = <|im_end|>. This will reduce the vocab size by 1
|
||||||
|
logger.warning_once(f"Unsloth: Will map {stop_word} to EOS = {tokenizer.eos_token}.")
|
||||||
|
string_vocab = string_vocab.replace(tokenizer.eos_token, stop_word)
|
||||||
|
pass
|
||||||
|
|
||||||
new_tokenizer = tokenizer._tokenizer.from_str(string_vocab)
|
new_tokenizer = tokenizer._tokenizer.from_str(string_vocab)
|
||||||
tokenizer = tokenizer.__class__(tokenizer_object = new_tokenizer, eos_token = stop_word)
|
tokenizer = tokenizer.__class__(tokenizer_object = new_tokenizer, eos_token = stop_word)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -916,6 +916,7 @@ class FastLlamaModel:
|
||||||
rope_scaling = None,
|
rope_scaling = None,
|
||||||
fix_tokenizer = True,
|
fix_tokenizer = True,
|
||||||
model_patcher = None,
|
model_patcher = None,
|
||||||
|
tokenizer_name = None,
|
||||||
**kwargs,
|
**kwargs,
|
||||||
):
|
):
|
||||||
if model_patcher is None: model_patcher = FastLlamaModel
|
if model_patcher is None: model_patcher = FastLlamaModel
|
||||||
|
|
@ -978,8 +979,11 @@ class FastLlamaModel:
|
||||||
max_position_embeddings = max_position_embeddings,
|
max_position_embeddings = max_position_embeddings,
|
||||||
**kwargs,
|
**kwargs,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Counteract saved tokenizers
|
||||||
|
tokenizer_name = model_name if tokenizer_name is None else tokenizer_name
|
||||||
tokenizer = AutoTokenizer.from_pretrained(
|
tokenizer = AutoTokenizer.from_pretrained(
|
||||||
model_name,
|
tokenizer_name,
|
||||||
model_max_length = max_position_embeddings,
|
model_max_length = max_position_embeddings,
|
||||||
padding_side = "right",
|
padding_side = "right",
|
||||||
token = token,
|
token = token,
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ from transformers import AutoConfig
|
||||||
from transformers import __version__ as transformers_version
|
from transformers import __version__ as transformers_version
|
||||||
from peft import PeftConfig, PeftModel
|
from peft import PeftConfig, PeftModel
|
||||||
from .mapper import INT_TO_FLOAT_MAPPER, FLOAT_TO_INT_MAPPER
|
from .mapper import INT_TO_FLOAT_MAPPER, FLOAT_TO_INT_MAPPER
|
||||||
|
import os
|
||||||
|
|
||||||
# https://github.com/huggingface/transformers/pull/26037 allows 4 bit loading!
|
# https://github.com/huggingface/transformers/pull/26037 allows 4 bit loading!
|
||||||
major, minor = transformers_version.split(".")[:2]
|
major, minor = transformers_version.split(".")[:2]
|
||||||
|
|
@ -118,6 +118,16 @@ class FastLanguageModel(FastLlamaModel):
|
||||||
)
|
)
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
# Check if this is local model since the tokenizer gets overwritten
|
||||||
|
if os.path.exists(os.path.join(old_model_name, "tokenizer_config.json")) and \
|
||||||
|
os.path.exists(os.path.join(old_model_name, "tokenizer.json")) and \
|
||||||
|
os.path.exists(os.path.join(old_model_name, "special_tokens_map.json")):
|
||||||
|
|
||||||
|
tokenizer_name = old_model_name
|
||||||
|
else:
|
||||||
|
tokenizer_name = None
|
||||||
|
pass
|
||||||
|
|
||||||
model, tokenizer = dispatch_model.from_pretrained(
|
model, tokenizer = dispatch_model.from_pretrained(
|
||||||
model_name = model_name,
|
model_name = model_name,
|
||||||
max_seq_length = max_seq_length,
|
max_seq_length = max_seq_length,
|
||||||
|
|
@ -128,6 +138,7 @@ class FastLanguageModel(FastLlamaModel):
|
||||||
rope_scaling = rope_scaling,
|
rope_scaling = rope_scaling,
|
||||||
fix_tokenizer = fix_tokenizer,
|
fix_tokenizer = fix_tokenizer,
|
||||||
model_patcher = dispatch_model,
|
model_patcher = dispatch_model,
|
||||||
|
tokenizer_name = tokenizer_name,
|
||||||
*args, **kwargs,
|
*args, **kwargs,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -294,6 +294,7 @@ class FastMistralModel(FastLlamaModel):
|
||||||
rope_scaling = None, # Mistral does not support RoPE scaling
|
rope_scaling = None, # Mistral does not support RoPE scaling
|
||||||
fix_tokenizer = True,
|
fix_tokenizer = True,
|
||||||
model_patcher = None,
|
model_patcher = None,
|
||||||
|
tokenizer_name = None,
|
||||||
**kwargs,
|
**kwargs,
|
||||||
):
|
):
|
||||||
if model_patcher is None: model_patcher = FastMistralModel
|
if model_patcher is None: model_patcher = FastMistralModel
|
||||||
|
|
@ -354,8 +355,11 @@ class FastMistralModel(FastLlamaModel):
|
||||||
# rope_scaling = rope_scaling,
|
# rope_scaling = rope_scaling,
|
||||||
**kwargs,
|
**kwargs,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Counteract saved tokenizers
|
||||||
|
tokenizer_name = model_name if tokenizer_name is None else tokenizer_name
|
||||||
tokenizer = AutoTokenizer.from_pretrained(
|
tokenizer = AutoTokenizer.from_pretrained(
|
||||||
model_name,
|
tokenizer_name,
|
||||||
model_max_length = max_position_embeddings,
|
model_max_length = max_position_embeddings,
|
||||||
padding_side = "right",
|
padding_side = "right",
|
||||||
token = token,
|
token = token,
|
||||||
|
|
|
||||||
|
|
@ -91,11 +91,13 @@ def _merge_lora(layer, name):
|
||||||
else:
|
else:
|
||||||
dtype = W.dtype
|
dtype = W.dtype
|
||||||
W = W.to(torch.float32).t()
|
W = W.to(torch.float32).t()
|
||||||
|
# W = W.t()
|
||||||
|
|
||||||
if A is not None:
|
if A is not None:
|
||||||
# sAB = (A.t().to(torch.float32) @ (s * B.t().to(torch.float32)))
|
# sAB = (A.t().to(torch.float32) @ (s * B.t().to(torch.float32)))
|
||||||
# W += sAB
|
# W += sAB
|
||||||
W.addmm_(A.t().to(torch.float32), B.t().to(torch.float32), alpha = s)
|
W.addmm_(A.t().to(torch.float32), B.t().to(torch.float32), alpha = s)
|
||||||
|
# W.addmm_(A.t().to(W.dtype), B.t().to(W.dtype), alpha = s)
|
||||||
# if not torch.isfinite(W).all():
|
# if not torch.isfinite(W).all():
|
||||||
maximum_element = torch.max(W.min().abs(), W.max())
|
maximum_element = torch.max(W.min().abs(), W.max())
|
||||||
if not torch.isfinite(maximum_element).item():
|
if not torch.isfinite(maximum_element).item():
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue