faster saving & inference

This commit is contained in:
Daniel Han-Chen 2024-01-21 16:22:28 +11:00
commit cbc1c69e29
2 changed files with 51 additions and 14 deletions

View file

@ -327,6 +327,7 @@ def LlamaDecoderLayer_fast_forward(
hidden_states = self.mlp(hidden_states)
hidden_states = residual + hidden_states
else:
print(hidden_states.shape)
# Self Attention
residual = hidden_states
hidden_states = fast_rms_layernorm_inference(self.input_layernorm, hidden_states)

View file

@ -783,12 +783,27 @@ def unsloth_save_pretrained_gguf(
del arguments["quantization_method"]
# Non blocking install GGUF first
git_clone = install_llama_cpp_clone_non_blocking()
python_install = install_python_non_blocking(["gguf", "protobuf"])
git_clone.wait()
makefile = install_llama_cpp_make_non_blocking()
new_save_directory = unsloth_save_model(**arguments)
python_install.wait()
if not os.path.exists("llama.cpp"):
git_clone = install_llama_cpp_clone_non_blocking()
python_install = install_python_non_blocking(["gguf", "protobuf"])
git_clone.wait()
makefile = install_llama_cpp_make_non_blocking()
new_save_directory = unsloth_save_model(**arguments)
python_install.wait()
else:
try:
new_save_directory = unsloth_save_model(**arguments)
makefile = None
except:
# Retry by recloning llama.cpp
git_clone = install_llama_cpp_clone_non_blocking()
python_install = install_python_non_blocking(["gguf", "protobuf"])
git_clone.wait()
makefile = install_llama_cpp_make_non_blocking()
new_save_directory = unsloth_save_model(**arguments)
python_install.wait()
pass
pass
for _ in range(3):
gc.collect()
@ -801,7 +816,10 @@ def unsloth_save_pretrained_gguf(
self, save_directory, token,
"GGUF converted", "gguf", file_location,
)
print(f"Saved to https://huggingface.co/{username}/{new_save_directory.lstrip('/.')}")
link = f"{username}/{new_save_directory.lstrip('/.')}" \
if username not in new_save_directory else \
new_save_directory.lstrip('/.')
print(f"Saved to https://huggingface.co/{link}")
pass
pass
@ -863,16 +881,31 @@ def unsloth_push_to_hub_gguf(
del arguments["quantization_method"]
# Non blocking install GGUF first
git_clone = install_llama_cpp_clone_non_blocking()
python_install = install_python_non_blocking(["gguf", "protobuf"])
git_clone.wait()
makefile = install_llama_cpp_make_non_blocking()
new_save_directory = unsloth_save_model(**arguments)
if not os.path.exists("llama.cpp"):
git_clone = install_llama_cpp_clone_non_blocking()
python_install = install_python_non_blocking(["gguf", "protobuf"])
git_clone.wait()
makefile = install_llama_cpp_make_non_blocking()
new_save_directory = unsloth_save_model(**arguments)
python_install.wait()
else:
try:
new_save_directory = unsloth_save_model(**arguments)
makefile = None
except:
# Retry by recloning llama.cpp
git_clone = install_llama_cpp_clone_non_blocking()
python_install = install_python_non_blocking(["gguf", "protobuf"])
git_clone.wait()
makefile = install_llama_cpp_make_non_blocking()
new_save_directory = unsloth_save_model(**arguments)
python_install.wait()
pass
pass
for _ in range(3):
gc.collect()
python_install.wait()
file_location = save_to_gguf(new_save_directory, quantization_method, makefile)
print("Unsloth: Uploading GGUF to Huggingface Hub...")
@ -880,7 +913,10 @@ def unsloth_push_to_hub_gguf(
self, repo_id, token,
"GGUF converted", "gguf", file_location,
)
print(f"Saved to https://huggingface.co/{username}/{new_save_directory.lstrip('/')}")
link = f"{username}/{new_save_directory.lstrip('/.')}" \
if username not in new_save_directory else \
new_save_directory.lstrip('/.')
print(f"Saved to https://huggingface.co/{link}")
pass