Download scripts/enc/make_multifunction.py from workfunction/McBopomofoLM-models: direct link, hf CLI and curl.
- Browser
- Download file 944 Bytes
-
https://huggingface.co/workfunction/McBopomofoLM-models/resolve/main/scripts/enc/make_multifunction.py
- Command line
-
hf download hf://workfunction/McBopomofoLM-models/scripts/enc/make_multifunction.py
-
curl -L -o make_multifunction.py https://huggingface.co/workfunction/McBopomofoLM-models/resolve/main/scripts/enc/make_multifunction.py
944 Bytes
| """Package the per-L bucket models into ONE multifunction .mlpackage (functions L8, L16, ...; default L16), | |
| coremltools save_multifunction dedups the shared weights. usage: make_multifunction.py 25m fp16_emb [8,16,32,64,256]""" | |
| import sys, subprocess | |
| import coremltools as ct | |
| size, var = sys.argv[1], sys.argv[2] | |
| Ls = [int(x) for x in (sys.argv[3] if len(sys.argv) > 3 else "8,16,32,64,256").split(",")] | |
| d = ct.utils.MultiFunctionDescriptor() | |
| for L in Ls: | |
| d.add_function(f"models/enc{size}_L{L}_{var}.mlpackage", src_function_name="main", target_function_name=f"L{L}") | |
| d.default_function_name = "L16" | |
| out = f"models/enc{size}_multi_{var}.mlpackage" | |
| ct.utils.save_multifunction(d, out) | |
| du = lambda p: subprocess.run(["du", "-sk", p], capture_output=True, text=True).stdout.split()[0] | |
| sep = sum(int(du(f"models/enc{size}_L{L}_{var}.mlpackage")) for L in Ls) | |
| print(f"{out}: {int(du(out))/1024:.1f} MB vs separate packages {sep/1024:.1f} MB") | |