| from huggingface_hub import snapshot_download |
| import os |
| import shutil |
| from sentence_transformers import SentenceTransformer |
| import torch |
|
|
| |
| repo_id = "google/embeddinggemma-300m-qat-q4_0-unquantized" |
| local_dir = "embeddinggemma-300m" |
|
|
| |
| existing_files = set(os.listdir(local_dir)) |
|
|
| |
| temp_dir = "_hf_temp_download" |
| os.makedirs(temp_dir, exist_ok=True) |
| snapshot_download( |
| repo_id, |
| local_dir=temp_dir, |
| ignore_patterns=["model.safetensors"], |
| resume_download=True, |
| allow_patterns=None |
| ) |
|
|
| |
| for fname in os.listdir(temp_dir): |
| if fname not in existing_files: |
| shutil.move(os.path.join(temp_dir, fname), os.path.join(local_dir, fname)) |
| print(f"Downloaded: {fname}") |
| else: |
| print(f"Already exists: {fname}") |
|
|
| |
| shutil.rmtree(temp_dir) |
| print("Done.") |
|
|
| |
| st_model = SentenceTransformer(repo_id) |
| dense1 = st_model[2].linear |
| dense2 = st_model[3].linear |
|
|
| onnx_dir = os.path.join(local_dir, "onnx") |
| os.makedirs(onnx_dir, exist_ok=True) |
|
|
| |
| dummy_input1 = torch.randn(1, dense1.in_features) |
| dense1 = dense1.to(dummy_input1.device) |
| torch.onnx.export( |
| dense1, |
| dummy_input1, |
| os.path.join(onnx_dir, "dense1.onnx"), |
| input_names=["input"], |
| output_names=["output"], |
| opset_version=14 |
| ) |
| print("Exported dense1.onnx") |
|
|
| |
| dummy_input2 = torch.randn(1, dense2.in_features) |
| dense2 = dense2.to(dummy_input2.device) |
| torch.onnx.export( |
| dense2, |
| dummy_input2, |
| os.path.join(onnx_dir, "dense2.onnx"), |
| input_names=["input"], |
| output_names=["output"], |
| opset_version=14 |
| ) |
| print("Exported dense2.onnx") |
|
|
| |
| |
| |
| |
| |
| |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|