From 92ed10b65e6b2f33321a2d64bbafe2968d0d46dd Mon Sep 17 00:00:00 2001 From: Wei-Chen Wang Date: Thu, 4 Jul 2024 12:10:50 +0800 Subject: [PATCH] Update huggingface models (#114) --- llm/tools/download_assets.sh | 2 +- llm/tools/download_model.py | 165 +++++------ llm/tools/download_model_from_dropbox.py | 350 +++++++++++++++++++++++ llm/tools/upload.py | 94 +++--- llm/tools/upload_to_dropbox.py | 57 ++++ requirements.txt | 3 +- 6 files changed, 544 insertions(+), 127 deletions(-) create mode 100644 llm/tools/download_model_from_dropbox.py create mode 100644 llm/tools/upload_to_dropbox.py diff --git a/llm/tools/download_assets.sh b/llm/tools/download_assets.sh index 69a9ac59..ca7c27b7 100755 --- a/llm/tools/download_assets.sh +++ b/llm/tools/download_assets.sh @@ -2,7 +2,7 @@ # List of files to download, their corresponding MD5 checksums, and target local paths files_and_checksums=( - "https://www.dropbox.com/scl/fi/fln95cddsgvi6p11b9jym/assets.zip?rlkey=615ye5b2ck4wkj5zoh1i40xoq&dl=1 8527788105acccfada9c89d075fa8764 assets.zip" + "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/assets.zip?download=true 8527788105acccfada9c89d075fa8764 assets.zip" ) OS=`uname` diff --git a/llm/tools/download_model.py b/llm/tools/download_model.py index d31cae69..822ee3dd 100644 --- a/llm/tools/download_model.py +++ b/llm/tools/download_model.py @@ -4,7 +4,7 @@ python download_model.py --model --QM Example commandline: - python download_model.py --model LLaMA_7B_2_chat --QM QM_ARM + python download_model.py --model LLaMA_3_8B_Instruct_awq_int4 --QM QM_ARM """ import argparse import hashlib @@ -14,68 +14,70 @@ import requests from tqdm import tqdm -MODEL_DIR = "models" +from huggingface_hub import hf_hub_download + +MODEL_DIR = "." # URLs and md5sums for models models = { "LLaMA_7B_fp32": { - "url": "https://www.dropbox.com/scl/fi/xli03zmet80vxrib7tuq7/LLaMA_7B.zip?rlkey=98e2vvptmn6qz0fw2uudd3gb1&dl=1", # noqa: E501 + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/FP32/LLaMA_7B.zip?download=true", # noqa: E501 "md5sum": "1ef6fde9b90745fa4c3d43e6d29d0c53", }, "LLaMA2_7B_chat_fp32": { - "url": "https://www.dropbox.com/scl/fi/55hei425f6tiev9cc9h9r/LLaMA_7B_2_chat.zip?rlkey=42j8vp7d3crz6qm9om23vth25&dl=1", # noqa: E501 + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/FP32/LLaMA_7B_2_chat.zip?download=true", # noqa: E501 "md5sum": "fccbd388c1e89dd90e153ed6d9734189", }, "LLaMA2_13B_chat_fp32": { - "url": "https://www.dropbox.com/scl/fi/qpzv3805ftdldvlocssu4/LLaMA_13B_2_chat.zip?rlkey=tfgnv9cz2i8lwuznyy6u3sf4k&dl=1", # noqa: E501 + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/FP32/LLaMA_13B_2_chat.zip?download=true", # noqa: E501 "md5sum": "59b73efa638be4131e5fd27c3fdee597", }, "CodeLLaMA_7B_Instruct_fp32": { - "url": "https://www.dropbox.com/scl/fi/fo79fi1q395rfb8lu4bef/CodeLLaMA_7B_Instruct.zip?rlkey=pw1ue4t4j85hogp3yf5yw9pig&dl=1", + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/FP32/CodeLLaMA_7B_Instruct.zip?download=true", "md5sum": "6ca1682140cd8f91316a8b5b7dee6cd4", }, "CodeLLaMA_13B_Instruct_fp32": { - "url": "https://www.dropbox.com/scl/fi/gtor1fw1mmol8agqy178j/CodeLLaMA_13B_Instruct.zip?rlkey=0e9zh1cptwjb67yaez0aorou9&dl=1", + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/FP32/CodeLLaMA_13B_Instruct.zip?download=true", "md5sum": "ebcb20dec3bd95a7e5a6eb93ed4c178d", }, "opt_6.7B_fp32": { - "url": "https://www.dropbox.com/scl/fi/mwy0uw51anodezy9rtcf1/OPT_6.7B.zip?rlkey=f8mtjg5eesuflrz3t5och4219&dl=1", + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/FP32/OPT_6.7B.zip?download=true", "md5sum": "69cffdc090388ac2d2abcbe8163b0397", }, "opt_1.3B_fp32": { - "url": "https://www.dropbox.com/scl/fi/nyqvc8hejzo4mwnw4690w/OPT_1.3B.zip?rlkey=d1a11e9o8d6qmsisbdqo1qftl&dl=1", + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/FP32/OPT_1.3B.zip?download=true", "md5sum": "a49490989fe030a0e9dee119285f7cf5", }, "opt_125m_fp32": { - "url": "https://www.dropbox.com/scl/fi/zvmdw8cdf7j0j3a99q8sx/OPT_125m.zip?rlkey=qehxgfs21m36wvm7ratwy1r5d&dl=1", + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/FP32/OPT_125m.zip?download=true", "md5sum": "816958aed84120b763942ba83c1b010f", }, "LLaVA_7B_CLIP_ViT-L_fp32": { - "url": "https://www.dropbox.com/scl/fi/h3w1jghi7n7a45y5j3rsi/LLaVA_7B_CLIP_ViT-L.zip?rlkey=u2oikuvbc3q1hj8i7n5unf816&dl=1", # noqa: E501 + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/FP32/LLaVA_7B_CLIP_ViT-L.zip?download=true", # noqa: E501 "md5sum": "dc4df9a17c7810333a6b9d561f4b8218", }, "LLaVA_13B_CLIP_ViT-L_fp32": { - "url": "https://www.dropbox.com/scl/fi/0uroj92srmo6z4ib4xr43/LLaVA_13B_CLIP_ViT-L.zip?rlkey=34x3r8yfh8ztiqbisg5z64hmd&dl=1", # noqa: E501 + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/FP32/LLaVA_13B_CLIP_ViT-L.zip?download=true", # noqa: E501 "md5sum": "3d4afd8051c779c014ba69aec7886961", }, "VILA_2.7B_CLIP_ViT-L_fp32": { - "url": "https://www.dropbox.com/scl/fi/f1vfgtwhr88yhpd8aabwp/VILA_2.7B_CLIP_ViT-L.zip?rlkey=qesrenbana7elbwk0szu53nzj&dl=1", # noqa: E501 + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/FP32/VILA_2.7B_CLIP_ViT-L.zip?download=true", # noqa: E501 "md5sum": "48455c57594ea1a6b44496fda3877c75", }, "VILA_7B_CLIP_ViT-L_fp32": { - "url": "https://www.dropbox.com/scl/fi/4oi3g3uypx2hgmw6hkahy/VILA_7B_CLIP_ViT-L.zip?rlkey=0393uexrzh4ofevkr0yaldefd&dl=1", # noqa: E501 + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/FP32/VILA_7B_CLIP_ViT-L.zip?download=true", # noqa: E501 "md5sum": "d2201fd2853da56c3e2b4b7043b1d37a", }, "StarCoder_15.5B_fp32": { - "url": "https://www.dropbox.com/scl/fi/vc1956by8v275t0ol6vw5/StarCoder_15.5B.zip?rlkey=aydnpd9w9jhgtlfqo5krkd0yx&dl=1", + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/FP32/StarCoder_15.5B.zip?download=true", "md5sum": "e3e9301866f47ab84817b46467ac49f6", }, "Mistral_7B_v0.2_Instruct_fp32": { - "url": "https://www.dropbox.com/scl/fi/6c8igzbega3xthqyjzguc/Mistral_7B_v0.2_Instruct.zip?rlkey=88ri16xi58cjk00l0d32luaky&dl=1", + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/FP32/Mistral_7B_v0.2_Instruct.zip?download=true", "md5sum": "8daa04f2af5f0470c66eb45615ab07e2", }, "LLaMA_3_8B_Instruct_fp32": { - "url": "https://www.dropbox.com/scl/fi/rj1n5ozget03qdp5t90oz/LLaMA_3_8B_Instruct.zip?rlkey=ugzbipwolkf6wzm50732e1ct5&dl=1", + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/FP32/LLaMA_3_8B_Instruct.zip?download=true", "md5sum": "ae710f37a74f98d0d47da085672179b5", }, "VILA1.5_8B_fp32": { @@ -87,194 +89,184 @@ Qmodels = { "QM_ARM": { "LLaMA_7B_awq_int4": { - "url": "https://www.dropbox.com/scl/fi/92yg27e0p21izx7lalryb/LLaMA_7B.zip?rlkey=97m442isg29es3ddon66nwfmy&dl=1", # noqa: E501 + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/QM_ARM/LLaMA_7B.zip?download=true", # noqa: E501 "md5sum": "4118dca49c39547929d9e02d67838153", }, "LLaMA2_7B_chat_awq_int4": { - "url": "https://www.dropbox.com/scl/fi/1trpw92vmh4czvl28hkv0/LLaMA_7B_2_chat.zip?rlkey=dy1pdek0147gnuxdzpodi6pkt&dl=1", # noqa: E501 + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/QM_ARM/LLaMA_7B_2_chat.zip?download=true", # noqa: E501 "md5sum": "af20c96de302c503a9fcfd5877ed0600", }, "LLaMA2_13B_chat_awq_int4": { - "url": "https://www.dropbox.com/scl/fi/rb7el1reycad98xrzif9a/LLaMA_13B_2_chat.zip?rlkey=wwd400no2uelcthvqxut3ojvj&dl=1", # noqa: E501 + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/QM_ARM/LLaMA_13B_2_chat.zip?download=true", # noqa: E501 "md5sum": "f1f7693da630bb7aa269ecae5bcc397a", }, "CodeLLaMA_7B_Instruct_awq_int4": { - "url": "https://www.dropbox.com/scl/fi/m6qcwnsg37sdtewvh41sb/CodeLLaMA_7B_Instruct.zip?rlkey=mlnn1s76k63zez44uatmsc7ij&dl=1", + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/QM_ARM/CodeLLaMA_7B_Instruct.zip?download=true", "md5sum": "a5b4c15857944daaa1e1ee34c5917264", }, "CodeLLaMA_13B_Instruct_awq_int4": { - "url": "https://www.dropbox.com/scl/fi/7gcmtonyyyavdaeccnivi/CodeLLaMA_13B_Instruct.zip?rlkey=e1u6ne71prrtcjh1sp8hs5sns&dl=1", + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/QM_ARM/CodeLLaMA_13B_Instruct.zip?download=true", "md5sum": "d749ec83a54dcf40a7d87e7dbfba42d4", }, "opt_125m_awq_int4": { - "url": "https://www.dropbox.com/scl/fi/3dedmlzi36jngj74iskr6/OPT_125m.zip?rlkey=hy7z46cwfbr4dlz9bcs1mtx5b&dl=1", # noqa: E501 + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/QM_ARM/OPT_125m.zip?download=true", # noqa: E501 "md5sum": "2b42c3866c54642557046140367217fa", }, "opt_1.3B_awq_int4": { - "url": "https://www.dropbox.com/scl/fi/1gzynks9u5j9bv5k2a0zj/OPT_1.3B.zip?rlkey=amtwlxypce84lvauo62on1601&dl=1", # noqa: E501 + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/QM_ARM/OPT_1.3B.zip?download=true", # noqa: E501 "md5sum": "1fb1296184c8c61e4066775ba59573b9", }, "opt_6.7B_awq_int4": { - "url": "https://www.dropbox.com/scl/fi/7lu8rz8z5npe2nccfr66n/OPT_6.7B.zip?rlkey=5dtie29ncqscifs2g4ylpwnz7&dl=1", # noqa: E501 + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/QM_ARM/OPT_6.7B.zip?download=true", # noqa: E501 "md5sum": "6d061dc64ccc60864391f484b5e564d0", }, "LLaVA_7B_awq_int4_CLIP_ViT-L": { - "url": "https://www.dropbox.com/scl/fi/rztjmc76yhtvudxiru03b/LLaVA_7B_CLIP_ViT-L.zip?rlkey=s1xy8ocw2ctioqziutucjim8w&dl=1", # noqa: E501 + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/QM_ARM/LLaVA_7B_CLIP_ViT-L.zip?download=true", # noqa: E501 "md5sum": "9fa1bc2f8c9b06b46c1f37bd2b17702c", }, "LLaVA_13B_awq_int4_CLIP_ViT-L": { - "url": "https://www.dropbox.com/scl/fi/hzqrq72xrk2uwupkktmpk/LLaVA_13B_CLIP_ViT-L.zip?rlkey=zit6e00fic7vdygrlg0cybivq&dl=1", # noqa: E501 + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/QM_ARM/LLaVA_13B_CLIP_ViT-L.zip?download=true", # noqa: E501 "md5sum": "fec078d99449df73c0f1236377b53eb3", }, "VILA_2.7B_awq_int4_CLIP_ViT-L": { - "url": "https://www.dropbox.com/scl/fi/pc9vohr7dyde2k3pbhai7/VILA_2.7B_CLIP_ViT-L.zip?rlkey=5dfayissvbj5unuuhzxzipaxk&dl=1", + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/QM_ARM/VILA_2.7B_CLIP_ViT-L.zip?download=true", "md5sum": "177b1a58707355c641da4f15fb3c7a71", }, "VILA_7B_awq_int4_CLIP_ViT-L": { - "url": "https://www.dropbox.com/scl/fi/9axqkn8e95p7zxy97ixjx/VILA_7B_CLIP_ViT-L.zip?rlkey=mud5qg3rr3yec12qcvsltca5w&dl=1", # noqa: E501 + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/QM_ARM/VILA_7B_CLIP_ViT-L.zip?download=true", # noqa: E501 "md5sum": "29aa8688b59dfde21d0b0b0b94b0ac27", }, "StarCoder_15.5B_awq_int4": { - "url": "https://www.dropbox.com/scl/fi/fe4dkrnzc25bt166w6bby/StarCoder_15.5B.zip?rlkey=ml1x96uep2k03z78ci7s1c0yb&dl=1", + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/QM_ARM/StarCoder_15.5B.zip?download=true", "md5sum": "0f16236c0aec0b32b553248cc78b8caf", }, "Mistral_7B_v0.2_Instruct_awq_int4": { - "url": "https://www.dropbox.com/scl/fi/ssr6bn9a6l9d4havu04om/Mistral_7B_v0.2_Instruct.zip?rlkey=73yqj6pw300o3izwr43etjqkr&dl=1", + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/QM_ARM/Mistral_7B_v0.2_Instruct.zip?download=true", "md5sum": "ac897d408a702ae79252bc79bfbbb699", }, "LLaMA_3_8B_Instruct_awq_int4": { - "url": "https://www.dropbox.com/scl/fi/zo9e82pnkxjbez3waic1w/LLaMA_3_8B_Instruct.zip?rlkey=nabq14qjzeaw8el7y5lh2oj8u&dl=1", + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/QM_ARM/LLaMA_3_8B_Instruct.zip?download=true", "md5sum": "8c44a5d7cb2a0406f8f1cbb785ed7e17", }, "VILA1.5_8B_awq_int4": { - "url": "https://www.dropbox.com/scl/fi/mnodsv9ky44zxopp3nb4p/VILA1.5_8B.zip?rlkey=ppzd1av22zon53ae6ey01zqkh&dl=1", # noqa: E501 + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/QM_ARM/VILA1.5_8B.zip?download=true", # noqa: E501 "md5sum": "9e9ab4e30f9fc7de69fadb3aae511456", }, }, "QM_x86": { "LLaMA_7B_awq_int4": { - "url": "https://www.dropbox.com/scl/fi/i7yqzwr94wki2kywh9emr/LLaMA_7B.zip?rlkey=ce5j5p03wlwz5xdjrwuetxp4h&dl=1", # noqa: E501 + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/QM_x86/LLaMA_7B.zip?download=true", # noqa: E501 "md5sum": "08c118ec34645808cd2d21678ad33659", }, "LLaMA2_7B_chat_awq_int4": { - "url": "https://www.dropbox.com/scl/fi/vu7wnes1c7gkcegg854ys/LLaMA_7B_2_chat.zip?rlkey=q61o8fpc954g1ke6g2eaot7cf&dl=1", # noqa: E501 + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/QM_x86/LLaMA_7B_2_chat.zip?download=true", # noqa: E501 "md5sum": "18f2193ccb393c7bca328f42427ef233", }, "LLaMA2_13B_chat_awq_int4": { - "url": "https://www.dropbox.com/scl/fi/t4u1jkp7gav8om4m6xjjv/LLaMA_13B_2_chat.zip?rlkey=tahltmq9bqu3ofx03r4mrsk2r&dl=1", # noqa: E501 + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/QM_x86/LLaMA_13B_2_chat.zip?download=true", # noqa: E501 "md5sum": "3684e5740f44ed05e213d6d807a1f136", }, "CodeLLaMA_7B_Instruct_awq_int4": { - "url": "https://www.dropbox.com/scl/fi/fav8kvwcuw1dpdiykny24/CodeLLaMA_7B_Instruct.zip?rlkey=bjhf467r8xb7di2lilqbgv8vm&dl=1", + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/QM_x86/CodeLLaMA_7B_Instruct.zip?download=true", "md5sum": "b208eec1b1bbb6532f26b68a7a3caae6", }, "CodeLLaMA_13B_Instruct_awq_int4": { - "url": "https://www.dropbox.com/scl/fi/0appg7uacff9z21hth06n/CodeLLaMA_13B_Instruct.zip?rlkey=v6fxuomhqmskwqgtclsat9pzt&dl=1", + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/QM_x86/CodeLLaMA_13B_Instruct.zip?download=true", "md5sum": "71ade74fe50b6beb378d52e19396926d", }, "opt_125m_awq_int4": { - "url": "https://www.dropbox.com/scl/fi/sl6kc1ql0877w550e4v17/OPT_125m.zip?rlkey=fsdqf3bc0vktl7iv6pfi6bbyx&dl=1", # noqa: E501 + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/QM_x86/OPT_125m.zip?download=true", # noqa: E501 "md5sum": "c9c26bb5c8bf9867e21e525da744ef19", }, "opt_1.3B_awq_int4": { - "url": "https://www.dropbox.com/scl/fi/t2t81kgskmpzzad985v72/OPT_1.3B.zip?rlkey=va6y8hqez7lxijdioigepjish&dl=1", # noqa: E501 + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/QM_x86/OPT_1.3B.zip?download=true", # noqa: E501 "md5sum": "dd4801d7b65915a70a29d1d304ce5783", }, "opt_6.7B_awq_int4": { - "url": "https://www.dropbox.com/scl/fi/uj4z3kp5wd3cvaaiyppvs/OPT_6.7B.zip?rlkey=yw5dxd18ajsc20g3mr2rqvnnt&dl=1", # noqa: E501 + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/QM_x86/OPT_6.7B.zip?download=true", # noqa: E501 "md5sum": "4aba1bee864029d06d1fec67f4d95a22", }, "LLaVA_7B_awq_int4_CLIP_ViT-L": { - "url": "https://www.dropbox.com/scl/fi/x81yfi26oonbu02xne2kp/LLaVA_7B_CLIP_ViT-L.zip?rlkey=8h5cz6aund96k2841wmcrnv5z&dl=1", # noqa: E501 + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/QM_x86/LLaVA_7B_CLIP_ViT-L.zip?download=true", # noqa: E501 "md5sum": "f903927fe3d02d9db7fb8f0c6587c136", }, "LLaVA_13B_awq_int4_CLIP_ViT-L": { - "url": "https://www.dropbox.com/scl/fi/7u8wihmvvr9jlio2rjw2f/LLaVA_13B_CLIP_ViT-L.zip?rlkey=bimpaaemyb3rp30wgkznytkuv&dl=1", # noqa: E501 + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/QM_x86/LLaVA_13B_CLIP_ViT-L.zip?download=true", # noqa: E501 "md5sum": "f22e8d5d754c64f0aa34d5531d3059bc", }, "VILA_2.7B_awq_int4_CLIP_ViT-L": { - "url": "https://www.dropbox.com/scl/fi/gldsl2fh6g5f0fvwnf8kq/VILA_2.7B_CLIP_ViT-L.zip?rlkey=oj2y01xt4vwtbg7vdg4g1btxd&dl=1", + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/QM_x86/VILA_2.7B_CLIP_ViT-L.zip?download=true", "md5sum": "e83ff23d58a0b91c732a9e3928aa344a", }, "VILA_7B_awq_int4_CLIP_ViT-L": { - "url": "https://www.dropbox.com/scl/fi/25cw3ob1oar6p3maxg6lq/VILA_7B_CLIP_ViT-L.zip?rlkey=b4vr29gvsdxlj9bg3i5cwsnjn&dl=1", # noqa: E501 + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/QM_x86/VILA_7B_CLIP_ViT-L.zip?download=true", # noqa: E501 "md5sum": "7af675198ec3c73d440ccc96b2722813", }, "StarCoder_15.5B_awq_int4": { - "url": "https://www.dropbox.com/scl/fi/86o2cblncmfd3xvuyyaqc/StarCoder_15.5B.zip?rlkey=2gswnyq9xihencaduddylpb2k&dl=1", + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/QM_x86/StarCoder_15.5B.zip?download=true", "md5sum": "48383ce0bf01b137069e3612cab8525f", }, "Mistral_7B_v0.2_Instruct_awq_int4": { - "url": "https://www.dropbox.com/scl/fi/2f7djt8z8lhkd60velfb3/Mistral_7B_v0.2_Instruct.zip?rlkey=gga6mh8trxf6durck4y4cyihe&dl=1", + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/QM_x86/Mistral_7B_v0.2_Instruct.zip?download=true", "md5sum": "66f24d7ca1e12f573e172d608536f997", }, "LLaMA_3_8B_Instruct_awq_int4": { - "url": "https://www.dropbox.com/scl/fi/h68a5isipths6a1e1eutg/LLaMA_3_8B_Instruct.zip?rlkey=63bk1uixu5q97l26u4q1mg0s3&dl=1", + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/QM_x86/LLaMA_3_8B_Instruct.zip?download=true", "md5sum": "8540fec0fefa44e13e81748ff8edb231", }, "VILA1.5_8B_awq_int4": { - "url": "https://www.dropbox.com/scl/fi/088d0vxu29jt0jmgw4es8/VILA1.5_8B.zip?rlkey=uhz1yoiovrckv4o48jmrl6s6i&dl=1", # noqa: E501 + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/QM_x86/VILA1.5_8B.zip?download=true", # noqa: E501 "md5sum": "1c0574fa1d4aa81616a655bc3436479c", }, }, "QM_CUDA": { "LLaMA2_7B_chat_awq_int4": { - "url": "https://www.dropbox.com/scl/fi/fwnd4x4t7065di0ojtbri/LLaMA_7B_2_chat.zip?rlkey=pzkux4yvjbsy8geua9wpio0gw&dl=1", # noqa: E501 + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/QM_CUDA/LLaMA_7B_2_chat.zip?download=true", # noqa: E501 "md5sum": "fedc72e60962128e3dbf070f770c5825", }, "LLaMA2_13B_chat_awq_int4": { - "url": "https://www.dropbox.com/scl/fi/k6j6gaeda5dk0ef56k272/LLaMA_13B_2_chat.zip?rlkey=fk2zvc5eqrmkm42xahhnqtf8o&dl=1", # noqa: E501 + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/QM_CUDA/LLaMA_13B_2_chat.zip?download=true", # noqa: E501 "md5sum": "24fd0af09f68d260b73594266ef1ee5d", }, "CodeLLaMA_7B_Instruct_awq_int4": { - "url": "https://www.dropbox.com/scl/fi/sejleaha7l257zmm7fbq9/CodeLLaMA_7B_Instruct.zip?rlkey=8pdyznt6wnr8gh4zr6h7ui6mf&dl=1", + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/QM_CUDA/CodeLLaMA_7B_Instruct.zip?download=true", "md5sum": "c6bf03ddb47a7cbf1dc370fac8250c90", }, "CodeLLaMA_13B_Instruct_awq_int4": { - "url": "https://www.dropbox.com/scl/fi/1i2j3cnuh2posylhyi9xf/CodeLLaMA_13B_Instruct.zip?rlkey=689ltxudp3woat7ewigtrp5tt&dl=1", + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/QM_CUDA/CodeLLaMA_13B_Instruct.zip?download=true", "md5sum": "3a9c5d2ed1863e686eba98221a618820", }, }, "INT8": { "opt_125m_smooth_int8": { - "url": "https://www.dropbox.com/scl/fi/onoifsya2o96vb22mo0zq/OPT_125m.zip?rlkey=cuzmajx96v6nvfq3qctf3ke4u&dl=1", # noqa: E501 + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/INT8/OPT_125m.zip?download=true", # noqa: E501 "md5sum": "e3bf0b7f13f393aa054de00a8433f232", }, "opt_1.3B_smooth_int8": { - "url": "https://www.dropbox.com/scl/fi/6a2lt28o37m0n5stpzj3q/OPT_1.3B.zip?rlkey=yzhj4pvo5y1dtvyh90ur0kotj&dl=1", # noqa: E501 + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/INT8/OPT_1.3B.zip?download=true", # noqa: E501 "md5sum": "d40d797f32d7b8a0a8648e9395575b12", }, "opt_6.7B_smooth_int8": { - "url": "https://www.dropbox.com/scl/fi/jetyhj4rlhgsxz4qsizpc/OPT_6.7B.zip?rlkey=nuey04ta87hq80fupkduzsgjz&dl=1", # noqa: E501 + "url": "https://huggingface.co/mit-han-lab/tinychatengine-model-zoo/resolve/main/INT8/OPT_6.7B.zip?download=true", # noqa: E501 "md5sum": "635994471bc6e56857cfa75f9949a090", }, }, } -def _download_file(url, filepath): - # Create a session - with requests.Session() as session: - session.headers = {"User-Agent": "Mozilla/5.0"} - - # Send a GET request to the URL - response = session.get(url, stream=True) - - # Get the total file size - file_size = int(response.headers.get("Content-Length", 0)) - - # Check if the request was successful - if response.status_code == 200: - print(f"\nStart downloading the model to {filepath}.") - # Download the file - with open(filepath, "wb") as file: - for chunk in tqdm(response.iter_content(chunk_size=1024), total=file_size // 1024, unit="KB"): - if chunk: - file.write(chunk) +def _download_file(url, filepath, QM): + if QM == "FP32": + folder_name = "FP32" + else: + folder_name = QM - print(f"\nFile downloaded successfully: {filepath}") - else: - print(f"Failed to download the file. HTTP status code: {response.status_code}") + print(f"\nStart downloading the model to {filepath}.") + hf_hub_download(repo_id="mit-han-lab/tinychatengine-model-zoo", + subfolder=folder_name, + filename=filepath, + force_download=True, + local_dir=".") + print(f"\nFile downloaded successfully: {filepath}") def _unzip_file(filepath, model_dir): @@ -309,11 +301,11 @@ def _md5(filepath): def _main(): parser = argparse.ArgumentParser(description="Download a file and check its md5sum") parser.add_argument("--model", help="The name of the file to download.") - parser.add_argument("--QM", default="fp32", help="Quantization method.") + parser.add_argument("--QM", default="FP32", help="Quantization method.") args = parser.parse_args() - if args.QM == "fp32": + if args.QM == "FP32": model_table = models model_dir = MODEL_DIR elif args.QM in Qmodels: @@ -326,8 +318,17 @@ def _main(): url = model_table[args.model]["url"] expected_md5sum = model_table[args.model]["md5sum"] - filepath = f"{model_dir}/{args.model}.zip" # Save the file in the current directory - _download_file(url, filepath) + # filepath = f"{model_dir}/{args.model}.zip" # Save the file in the current directory + filepath = f"{model_dir}/{url.split('/')[-1].split('?')[0]}" # Save the file in the current directory + # if the file exists, delete it + if os.path.isfile(filepath): + print(f"File already exists: {filepath}. Removing it.") + os.remove(filepath) + _download_file(url, filepath, args.QM) + + # Move the file from args.QM folder to the current directory + os.rename(f"{args.QM}/{filepath}", f"./{filepath}") + os.rmdir(args.QM) actual_md5sum = _md5(filepath) diff --git a/llm/tools/download_model_from_dropbox.py b/llm/tools/download_model_from_dropbox.py new file mode 100644 index 00000000..33fe66bc --- /dev/null +++ b/llm/tools/download_model_from_dropbox.py @@ -0,0 +1,350 @@ +""" DEPRECATED: This script is deprecated. Please use `download_model.py` to download models from Hugging Face instead. + +Python script to download model binaries. + +Usage: + python download_model_from_dropbox.py --model --QM + +Example commandline: + python download_model_from_dropbox.py --model LLaMA_7B_2_chat --QM QM_ARM +""" +import argparse +import hashlib +import os +import zipfile + +import requests +from tqdm import tqdm + +MODEL_DIR = "models" + +# URLs and md5sums for models +models = { + "LLaMA_7B_fp32": { + "url": "https://www.dropbox.com/scl/fi/xli03zmet80vxrib7tuq7/LLaMA_7B.zip?rlkey=98e2vvptmn6qz0fw2uudd3gb1&dl=1", # noqa: E501 + "md5sum": "1ef6fde9b90745fa4c3d43e6d29d0c53", + }, + "LLaMA2_7B_chat_fp32": { + "url": "https://www.dropbox.com/scl/fi/55hei425f6tiev9cc9h9r/LLaMA_7B_2_chat.zip?rlkey=42j8vp7d3crz6qm9om23vth25&dl=1", # noqa: E501 + "md5sum": "fccbd388c1e89dd90e153ed6d9734189", + }, + "LLaMA2_13B_chat_fp32": { + "url": "https://www.dropbox.com/scl/fi/qpzv3805ftdldvlocssu4/LLaMA_13B_2_chat.zip?rlkey=tfgnv9cz2i8lwuznyy6u3sf4k&dl=1", # noqa: E501 + "md5sum": "59b73efa638be4131e5fd27c3fdee597", + }, + "CodeLLaMA_7B_Instruct_fp32": { + "url": "https://www.dropbox.com/scl/fi/fo79fi1q395rfb8lu4bef/CodeLLaMA_7B_Instruct.zip?rlkey=pw1ue4t4j85hogp3yf5yw9pig&dl=1", + "md5sum": "6ca1682140cd8f91316a8b5b7dee6cd4", + }, + "CodeLLaMA_13B_Instruct_fp32": { + "url": "https://www.dropbox.com/scl/fi/gtor1fw1mmol8agqy178j/CodeLLaMA_13B_Instruct.zip?rlkey=0e9zh1cptwjb67yaez0aorou9&dl=1", + "md5sum": "ebcb20dec3bd95a7e5a6eb93ed4c178d", + }, + "opt_6.7B_fp32": { + "url": "https://www.dropbox.com/scl/fi/mwy0uw51anodezy9rtcf1/OPT_6.7B.zip?rlkey=f8mtjg5eesuflrz3t5och4219&dl=1", + "md5sum": "69cffdc090388ac2d2abcbe8163b0397", + }, + "opt_1.3B_fp32": { + "url": "https://www.dropbox.com/scl/fi/nyqvc8hejzo4mwnw4690w/OPT_1.3B.zip?rlkey=d1a11e9o8d6qmsisbdqo1qftl&dl=1", + "md5sum": "a49490989fe030a0e9dee119285f7cf5", + }, + "opt_125m_fp32": { + "url": "https://www.dropbox.com/scl/fi/zvmdw8cdf7j0j3a99q8sx/OPT_125m.zip?rlkey=qehxgfs21m36wvm7ratwy1r5d&dl=1", + "md5sum": "816958aed84120b763942ba83c1b010f", + }, + "LLaVA_7B_CLIP_ViT-L_fp32": { + "url": "https://www.dropbox.com/scl/fi/h3w1jghi7n7a45y5j3rsi/LLaVA_7B_CLIP_ViT-L.zip?rlkey=u2oikuvbc3q1hj8i7n5unf816&dl=1", # noqa: E501 + "md5sum": "dc4df9a17c7810333a6b9d561f4b8218", + }, + "LLaVA_13B_CLIP_ViT-L_fp32": { + "url": "https://www.dropbox.com/scl/fi/0uroj92srmo6z4ib4xr43/LLaVA_13B_CLIP_ViT-L.zip?rlkey=34x3r8yfh8ztiqbisg5z64hmd&dl=1", # noqa: E501 + "md5sum": "3d4afd8051c779c014ba69aec7886961", + }, + "VILA_2.7B_CLIP_ViT-L_fp32": { + "url": "https://www.dropbox.com/scl/fi/f1vfgtwhr88yhpd8aabwp/VILA_2.7B_CLIP_ViT-L.zip?rlkey=qesrenbana7elbwk0szu53nzj&dl=1", # noqa: E501 + "md5sum": "48455c57594ea1a6b44496fda3877c75", + }, + "VILA_7B_CLIP_ViT-L_fp32": { + "url": "https://www.dropbox.com/scl/fi/4oi3g3uypx2hgmw6hkahy/VILA_7B_CLIP_ViT-L.zip?rlkey=0393uexrzh4ofevkr0yaldefd&dl=1", # noqa: E501 + "md5sum": "d2201fd2853da56c3e2b4b7043b1d37a", + }, + "StarCoder_15.5B_fp32": { + "url": "https://www.dropbox.com/scl/fi/vc1956by8v275t0ol6vw5/StarCoder_15.5B.zip?rlkey=aydnpd9w9jhgtlfqo5krkd0yx&dl=1", + "md5sum": "e3e9301866f47ab84817b46467ac49f6", + }, + "Mistral_7B_v0.2_Instruct_fp32": { + "url": "https://www.dropbox.com/scl/fi/6c8igzbega3xthqyjzguc/Mistral_7B_v0.2_Instruct.zip?rlkey=88ri16xi58cjk00l0d32luaky&dl=1", + "md5sum": "8daa04f2af5f0470c66eb45615ab07e2", + }, + "LLaMA_3_8B_Instruct_fp32": { + "url": "https://www.dropbox.com/scl/fi/rj1n5ozget03qdp5t90oz/LLaMA_3_8B_Instruct.zip?rlkey=ugzbipwolkf6wzm50732e1ct5&dl=1", + "md5sum": "ae710f37a74f98d0d47da085672179b5", + }, + "VILA1.5_8B_fp32": { + "url": "", # noqa: E501 + "md5sum": "", + }, +} + +Qmodels = { + "QM_ARM": { + "LLaMA_7B_awq_int4": { + "url": "https://www.dropbox.com/scl/fi/92yg27e0p21izx7lalryb/LLaMA_7B.zip?rlkey=97m442isg29es3ddon66nwfmy&dl=1", # noqa: E501 + "md5sum": "4118dca49c39547929d9e02d67838153", + }, + "LLaMA2_7B_chat_awq_int4": { + "url": "https://www.dropbox.com/scl/fi/1trpw92vmh4czvl28hkv0/LLaMA_7B_2_chat.zip?rlkey=dy1pdek0147gnuxdzpodi6pkt&dl=1", # noqa: E501 + "md5sum": "af20c96de302c503a9fcfd5877ed0600", + }, + "LLaMA2_13B_chat_awq_int4": { + "url": "https://www.dropbox.com/scl/fi/rb7el1reycad98xrzif9a/LLaMA_13B_2_chat.zip?rlkey=wwd400no2uelcthvqxut3ojvj&dl=1", # noqa: E501 + "md5sum": "f1f7693da630bb7aa269ecae5bcc397a", + }, + "CodeLLaMA_7B_Instruct_awq_int4": { + "url": "https://www.dropbox.com/scl/fi/m6qcwnsg37sdtewvh41sb/CodeLLaMA_7B_Instruct.zip?rlkey=mlnn1s76k63zez44uatmsc7ij&dl=1", + "md5sum": "a5b4c15857944daaa1e1ee34c5917264", + }, + "CodeLLaMA_13B_Instruct_awq_int4": { + "url": "https://www.dropbox.com/scl/fi/7gcmtonyyyavdaeccnivi/CodeLLaMA_13B_Instruct.zip?rlkey=e1u6ne71prrtcjh1sp8hs5sns&dl=1", + "md5sum": "d749ec83a54dcf40a7d87e7dbfba42d4", + }, + "opt_125m_awq_int4": { + "url": "https://www.dropbox.com/scl/fi/3dedmlzi36jngj74iskr6/OPT_125m.zip?rlkey=hy7z46cwfbr4dlz9bcs1mtx5b&dl=1", # noqa: E501 + "md5sum": "2b42c3866c54642557046140367217fa", + }, + "opt_1.3B_awq_int4": { + "url": "https://www.dropbox.com/scl/fi/1gzynks9u5j9bv5k2a0zj/OPT_1.3B.zip?rlkey=amtwlxypce84lvauo62on1601&dl=1", # noqa: E501 + "md5sum": "1fb1296184c8c61e4066775ba59573b9", + }, + "opt_6.7B_awq_int4": { + "url": "https://www.dropbox.com/scl/fi/7lu8rz8z5npe2nccfr66n/OPT_6.7B.zip?rlkey=5dtie29ncqscifs2g4ylpwnz7&dl=1", # noqa: E501 + "md5sum": "6d061dc64ccc60864391f484b5e564d0", + }, + "LLaVA_7B_awq_int4_CLIP_ViT-L": { + "url": "https://www.dropbox.com/scl/fi/rztjmc76yhtvudxiru03b/LLaVA_7B_CLIP_ViT-L.zip?rlkey=s1xy8ocw2ctioqziutucjim8w&dl=1", # noqa: E501 + "md5sum": "9fa1bc2f8c9b06b46c1f37bd2b17702c", + }, + "LLaVA_13B_awq_int4_CLIP_ViT-L": { + "url": "https://www.dropbox.com/scl/fi/hzqrq72xrk2uwupkktmpk/LLaVA_13B_CLIP_ViT-L.zip?rlkey=zit6e00fic7vdygrlg0cybivq&dl=1", # noqa: E501 + "md5sum": "fec078d99449df73c0f1236377b53eb3", + }, + "VILA_2.7B_awq_int4_CLIP_ViT-L": { + "url": "https://www.dropbox.com/scl/fi/pc9vohr7dyde2k3pbhai7/VILA_2.7B_CLIP_ViT-L.zip?rlkey=5dfayissvbj5unuuhzxzipaxk&dl=1", + "md5sum": "177b1a58707355c641da4f15fb3c7a71", + }, + "VILA_7B_awq_int4_CLIP_ViT-L": { + "url": "https://www.dropbox.com/scl/fi/9axqkn8e95p7zxy97ixjx/VILA_7B_CLIP_ViT-L.zip?rlkey=mud5qg3rr3yec12qcvsltca5w&dl=1", # noqa: E501 + "md5sum": "29aa8688b59dfde21d0b0b0b94b0ac27", + }, + "StarCoder_15.5B_awq_int4": { + "url": "https://www.dropbox.com/scl/fi/fe4dkrnzc25bt166w6bby/StarCoder_15.5B.zip?rlkey=ml1x96uep2k03z78ci7s1c0yb&dl=1", + "md5sum": "0f16236c0aec0b32b553248cc78b8caf", + }, + "Mistral_7B_v0.2_Instruct_awq_int4": { + "url": "https://www.dropbox.com/scl/fi/ssr6bn9a6l9d4havu04om/Mistral_7B_v0.2_Instruct.zip?rlkey=73yqj6pw300o3izwr43etjqkr&dl=1", + "md5sum": "ac897d408a702ae79252bc79bfbbb699", + }, + "LLaMA_3_8B_Instruct_awq_int4": { + "url": "https://www.dropbox.com/scl/fi/zo9e82pnkxjbez3waic1w/LLaMA_3_8B_Instruct.zip?rlkey=nabq14qjzeaw8el7y5lh2oj8u&dl=1", + "md5sum": "8c44a5d7cb2a0406f8f1cbb785ed7e17", + }, + "VILA1.5_8B_awq_int4": { + "url": "https://www.dropbox.com/scl/fi/mnodsv9ky44zxopp3nb4p/VILA1.5_8B.zip?rlkey=ppzd1av22zon53ae6ey01zqkh&dl=1", # noqa: E501 + "md5sum": "9e9ab4e30f9fc7de69fadb3aae511456", + }, + }, + "QM_x86": { + "LLaMA_7B_awq_int4": { + "url": "https://www.dropbox.com/scl/fi/i7yqzwr94wki2kywh9emr/LLaMA_7B.zip?rlkey=ce5j5p03wlwz5xdjrwuetxp4h&dl=1", # noqa: E501 + "md5sum": "08c118ec34645808cd2d21678ad33659", + }, + "LLaMA2_7B_chat_awq_int4": { + "url": "https://www.dropbox.com/scl/fi/vu7wnes1c7gkcegg854ys/LLaMA_7B_2_chat.zip?rlkey=q61o8fpc954g1ke6g2eaot7cf&dl=1", # noqa: E501 + "md5sum": "18f2193ccb393c7bca328f42427ef233", + }, + "LLaMA2_13B_chat_awq_int4": { + "url": "https://www.dropbox.com/scl/fi/t4u1jkp7gav8om4m6xjjv/LLaMA_13B_2_chat.zip?rlkey=tahltmq9bqu3ofx03r4mrsk2r&dl=1", # noqa: E501 + "md5sum": "3684e5740f44ed05e213d6d807a1f136", + }, + "CodeLLaMA_7B_Instruct_awq_int4": { + "url": "https://www.dropbox.com/scl/fi/fav8kvwcuw1dpdiykny24/CodeLLaMA_7B_Instruct.zip?rlkey=bjhf467r8xb7di2lilqbgv8vm&dl=1", + "md5sum": "b208eec1b1bbb6532f26b68a7a3caae6", + }, + "CodeLLaMA_13B_Instruct_awq_int4": { + "url": "https://www.dropbox.com/scl/fi/0appg7uacff9z21hth06n/CodeLLaMA_13B_Instruct.zip?rlkey=v6fxuomhqmskwqgtclsat9pzt&dl=1", + "md5sum": "71ade74fe50b6beb378d52e19396926d", + }, + "opt_125m_awq_int4": { + "url": "https://www.dropbox.com/scl/fi/sl6kc1ql0877w550e4v17/OPT_125m.zip?rlkey=fsdqf3bc0vktl7iv6pfi6bbyx&dl=1", # noqa: E501 + "md5sum": "c9c26bb5c8bf9867e21e525da744ef19", + }, + "opt_1.3B_awq_int4": { + "url": "https://www.dropbox.com/scl/fi/t2t81kgskmpzzad985v72/OPT_1.3B.zip?rlkey=va6y8hqez7lxijdioigepjish&dl=1", # noqa: E501 + "md5sum": "dd4801d7b65915a70a29d1d304ce5783", + }, + "opt_6.7B_awq_int4": { + "url": "https://www.dropbox.com/scl/fi/uj4z3kp5wd3cvaaiyppvs/OPT_6.7B.zip?rlkey=yw5dxd18ajsc20g3mr2rqvnnt&dl=1", # noqa: E501 + "md5sum": "4aba1bee864029d06d1fec67f4d95a22", + }, + "LLaVA_7B_awq_int4_CLIP_ViT-L": { + "url": "https://www.dropbox.com/scl/fi/x81yfi26oonbu02xne2kp/LLaVA_7B_CLIP_ViT-L.zip?rlkey=8h5cz6aund96k2841wmcrnv5z&dl=1", # noqa: E501 + "md5sum": "f903927fe3d02d9db7fb8f0c6587c136", + }, + "LLaVA_13B_awq_int4_CLIP_ViT-L": { + "url": "https://www.dropbox.com/scl/fi/7u8wihmvvr9jlio2rjw2f/LLaVA_13B_CLIP_ViT-L.zip?rlkey=bimpaaemyb3rp30wgkznytkuv&dl=1", # noqa: E501 + "md5sum": "f22e8d5d754c64f0aa34d5531d3059bc", + }, + "VILA_2.7B_awq_int4_CLIP_ViT-L": { + "url": "https://www.dropbox.com/scl/fi/gldsl2fh6g5f0fvwnf8kq/VILA_2.7B_CLIP_ViT-L.zip?rlkey=oj2y01xt4vwtbg7vdg4g1btxd&dl=1", + "md5sum": "e83ff23d58a0b91c732a9e3928aa344a", + }, + "VILA_7B_awq_int4_CLIP_ViT-L": { + "url": "https://www.dropbox.com/scl/fi/25cw3ob1oar6p3maxg6lq/VILA_7B_CLIP_ViT-L.zip?rlkey=b4vr29gvsdxlj9bg3i5cwsnjn&dl=1", # noqa: E501 + "md5sum": "7af675198ec3c73d440ccc96b2722813", + }, + "StarCoder_15.5B_awq_int4": { + "url": "https://www.dropbox.com/scl/fi/86o2cblncmfd3xvuyyaqc/StarCoder_15.5B.zip?rlkey=2gswnyq9xihencaduddylpb2k&dl=1", + "md5sum": "48383ce0bf01b137069e3612cab8525f", + }, + "Mistral_7B_v0.2_Instruct_awq_int4": { + "url": "https://www.dropbox.com/scl/fi/2f7djt8z8lhkd60velfb3/Mistral_7B_v0.2_Instruct.zip?rlkey=gga6mh8trxf6durck4y4cyihe&dl=1", + "md5sum": "66f24d7ca1e12f573e172d608536f997", + }, + "LLaMA_3_8B_Instruct_awq_int4": { + "url": "https://www.dropbox.com/scl/fi/h68a5isipths6a1e1eutg/LLaMA_3_8B_Instruct.zip?rlkey=63bk1uixu5q97l26u4q1mg0s3&dl=1", + "md5sum": "8540fec0fefa44e13e81748ff8edb231", + }, + "VILA1.5_8B_awq_int4": { + "url": "https://www.dropbox.com/scl/fi/088d0vxu29jt0jmgw4es8/VILA1.5_8B.zip?rlkey=uhz1yoiovrckv4o48jmrl6s6i&dl=1", # noqa: E501 + "md5sum": "1c0574fa1d4aa81616a655bc3436479c", + }, + }, + "QM_CUDA": { + "LLaMA2_7B_chat_awq_int4": { + "url": "https://www.dropbox.com/scl/fi/fwnd4x4t7065di0ojtbri/LLaMA_7B_2_chat.zip?rlkey=pzkux4yvjbsy8geua9wpio0gw&dl=1", # noqa: E501 + "md5sum": "fedc72e60962128e3dbf070f770c5825", + }, + "LLaMA2_13B_chat_awq_int4": { + "url": "https://www.dropbox.com/scl/fi/k6j6gaeda5dk0ef56k272/LLaMA_13B_2_chat.zip?rlkey=fk2zvc5eqrmkm42xahhnqtf8o&dl=1", # noqa: E501 + "md5sum": "24fd0af09f68d260b73594266ef1ee5d", + }, + "CodeLLaMA_7B_Instruct_awq_int4": { + "url": "https://www.dropbox.com/scl/fi/sejleaha7l257zmm7fbq9/CodeLLaMA_7B_Instruct.zip?rlkey=8pdyznt6wnr8gh4zr6h7ui6mf&dl=1", + "md5sum": "c6bf03ddb47a7cbf1dc370fac8250c90", + }, + "CodeLLaMA_13B_Instruct_awq_int4": { + "url": "https://www.dropbox.com/scl/fi/1i2j3cnuh2posylhyi9xf/CodeLLaMA_13B_Instruct.zip?rlkey=689ltxudp3woat7ewigtrp5tt&dl=1", + "md5sum": "3a9c5d2ed1863e686eba98221a618820", + }, + }, + "INT8": { + "opt_125m_smooth_int8": { + "url": "https://www.dropbox.com/scl/fi/onoifsya2o96vb22mo0zq/OPT_125m.zip?rlkey=cuzmajx96v6nvfq3qctf3ke4u&dl=1", # noqa: E501 + "md5sum": "e3bf0b7f13f393aa054de00a8433f232", + }, + "opt_1.3B_smooth_int8": { + "url": "https://www.dropbox.com/scl/fi/6a2lt28o37m0n5stpzj3q/OPT_1.3B.zip?rlkey=yzhj4pvo5y1dtvyh90ur0kotj&dl=1", # noqa: E501 + "md5sum": "d40d797f32d7b8a0a8648e9395575b12", + }, + "opt_6.7B_smooth_int8": { + "url": "https://www.dropbox.com/scl/fi/jetyhj4rlhgsxz4qsizpc/OPT_6.7B.zip?rlkey=nuey04ta87hq80fupkduzsgjz&dl=1", # noqa: E501 + "md5sum": "635994471bc6e56857cfa75f9949a090", + }, + }, +} + + +def _download_file(url, filepath): + # Create a session + with requests.Session() as session: + session.headers = {"User-Agent": "Mozilla/5.0"} + + # Send a GET request to the URL + response = session.get(url, stream=True) + + # Get the total file size + file_size = int(response.headers.get("Content-Length", 0)) + + # Check if the request was successful + if response.status_code == 200: + print(f"\nStart downloading the model to {filepath}.") + # Download the file + with open(filepath, "wb") as file: + for chunk in tqdm(response.iter_content(chunk_size=1024), total=file_size // 1024, unit="KB"): + if chunk: + file.write(chunk) + + print(f"\nFile downloaded successfully: {filepath}") + else: + print(f"Failed to download the file. HTTP status code: {response.status_code}") + + +def _unzip_file(filepath, model_dir): + print(f"Start unzip the model: {filepath}...") + # Check if the file is a zip file + if zipfile.is_zipfile(filepath): + # Create a ZipFile object + with zipfile.ZipFile(filepath, "r") as zip_ref: + # Extract all the contents of the zip file in the current directory + zip_ref.extractall(model_dir) + print(f"File unzipped successfully: {filepath}") + else: + print(f"The file is not a zip file: {filepath}") + + +def _remove_file(filepath): + if os.path.isfile(filepath): + os.remove(filepath) + print(f"File removed successfully: {filepath}") + else: + print(f"Error: {filepath} not a valid filename") + + +def _md5(filepath): + hash_md5 = hashlib.md5() + with open(filepath, "rb") as f: + for chunk in iter(lambda: f.read(4096), b""): + hash_md5.update(chunk) + return hash_md5.hexdigest() + + +def _main(): + parser = argparse.ArgumentParser(description="Download a file and check its md5sum") + parser.add_argument("--model", help="The name of the file to download.") + parser.add_argument("--QM", default="fp32", help="Quantization method.") + + args = parser.parse_args() + + if args.QM == "fp32": + model_table = models + model_dir = MODEL_DIR + elif args.QM in Qmodels: + model_table = Qmodels[args.QM] + model_dir = "." + else: + raise NotImplementedError(f"{args.QM} is not supported.") + + if args.model in model_table: + url = model_table[args.model]["url"] + expected_md5sum = model_table[args.model]["md5sum"] + + filepath = f"{model_dir}/{args.model}.zip" # Save the file in the current directory + _download_file(url, filepath) + + actual_md5sum = _md5(filepath) + + if actual_md5sum == expected_md5sum: + print("The md5sum of the file matches the expected md5sum.") + _unzip_file(filepath, model_dir) # Unzip the file + _remove_file(filepath) # Remove the zip file + else: + print( + "The md5sum of the file does not match the expected md5sum.", + f"Expected: {expected_md5sum}, got: {actual_md5sum}", + ) + else: + raise ValueError(f"Unexpected model: {args.model}. Supported options: {models.keys()}") + + +if __name__ == "__main__": + _main() diff --git a/llm/tools/upload.py b/llm/tools/upload.py index 44de8577..848fdb27 100644 --- a/llm/tools/upload.py +++ b/llm/tools/upload.py @@ -1,55 +1,63 @@ -"""Uploading models and asset to the dropbox storage. +""" Python script to upload models to Hugging Face. + +Usage: + python tools/upload.py --filename --QM --hf_token Example commandline: - python upload.py + python tools/upload.py --filename LLaMA_3_8B_Instruct.zip --QM QM_ARM --hf_token """ import argparse +import hashlib import os +import zipfile + +import requests +from tqdm import tqdm +from huggingface_hub import HfApi + + +def _upload_file_to_HF(filename, folder_name, hf_token): + # Check if the file is a zip file + if zipfile.is_zipfile(filename): + print(f"Start uploading the model to Huggingface: mit-han-lab/tinychatengine-model-zoo/{folder_name}/{filename}") + api = HfApi() + api.upload_file( + path_or_fileobj=filename, + path_in_repo=f"{folder_name}/{filename}", + repo_id="mit-han-lab/tinychatengine-model-zoo", + repo_type="model", + commit_message="Upload models", + token=hf_token + ) + print(f"File uploaded successfully: mit-han-lab/tinychatengine-model-zoo/{folder_name}/{filename}") + else: + print(f"The file is not a zip file: {filename}") + +def _remove_file(filepath): + if os.path.isfile(filepath): + os.remove(filepath) + print(f"File removed successfully: {filepath}") + else: + print(f"Error: {filepath} not a valid filename") + +def _main(): + parser = argparse.ArgumentParser(description="Download a file and check its md5sum") + parser.add_argument("--filename", help="The name of the file to upload.") + parser.add_argument("--QM", default="FP32", help="Quantization method.") + parser.add_argument("--hf_token", help="Huggingface write token.") + parser.add_argument("--remove_file", action="store_true", help="Remove the file after uploading.") + args = parser.parse_args() -import dropbox - -files_to_upload = [ - "CodeLLaMA_13B_Instruct.zip", - "CodeLLaMA_7B_Instruct.zip", - # "LLaMA_13B_2_chat.zip", - # "LLaMA_7B_2_chat.zip", - # "assets.zip", -] - - -def subebackups(file_path, target_path, token): - """Upload a file to the dropbox storage.""" - dbx = dropbox.Dropbox(token, timeout=36000) - file_size = os.path.getsize(file_path) - CHUNK_SIZE = 50 * 1024 * 1024 - dest_path = target_path + Qmodels = ["FP32", "QM_ARM", "QM_x86", "QM_CUDA", "INT8"] - with open(file_path, "rb") as f: - if file_size <= CHUNK_SIZE: - dbx.files_upload(f.read(), dest_path) + if args.QM not in Qmodels: + raise NotImplementedError(f"{args.QM} is not supported.") - else: - upload_session_start_result = dbx.files_upload_session_start(f.read(CHUNK_SIZE)) - cursor = dropbox.files.UploadSessionCursor( - session_id=upload_session_start_result.session_id, offset=f.tell() - ) - commit = dropbox.files.CommitInfo(path=dest_path, mode=dropbox.files.WriteMode("overwrite")) + _upload_file_to_HF(args.filename, args.QM, args.hf_token) # Upload the file to Huggingface - while f.tell() < file_size: - if (file_size - f.tell()) <= CHUNK_SIZE: - print(dbx.files_upload_session_finish(f.read(CHUNK_SIZE), cursor, commit)) - else: - dbx.files_upload_session_append(f.read(CHUNK_SIZE), cursor.session_id, cursor.offset) - cursor.offset = f.tell() + if args.remove_file: + _remove_file(args.filename) # Remove the zip file if __name__ == "__main__": - parser = argparse.ArgumentParser(description="Upload a file to Dropbox.") - parser.add_argument("token", help="Your Dropbox OAuth2 token.") - args = parser.parse_args() - - db_prefix = "/HAN Lab Public Space/Projects/TinyChatEngine/assets and models/QM_CUDA/" - local_prefix = "uploads" - - for file in files_to_upload: - subebackups(file, db_prefix + file, args.token) + _main() diff --git a/llm/tools/upload_to_dropbox.py b/llm/tools/upload_to_dropbox.py new file mode 100644 index 00000000..b2a29c4e --- /dev/null +++ b/llm/tools/upload_to_dropbox.py @@ -0,0 +1,57 @@ +""" DEPRECATED: This script is deprecated. Please use `upload.py` to upload models to Hugging Face instead. + +Uploading models and asset to the dropbox storage. + +Example commandline: + python upload.py +""" +import argparse +import os + +import dropbox + +files_to_upload = [ + "CodeLLaMA_13B_Instruct.zip", + "CodeLLaMA_7B_Instruct.zip", + # "LLaMA_13B_2_chat.zip", + # "LLaMA_7B_2_chat.zip", + # "assets.zip", +] + + +def subebackups(file_path, target_path, token): + """Upload a file to the dropbox storage.""" + dbx = dropbox.Dropbox(token, timeout=36000) + file_size = os.path.getsize(file_path) + CHUNK_SIZE = 50 * 1024 * 1024 + dest_path = target_path + + with open(file_path, "rb") as f: + if file_size <= CHUNK_SIZE: + dbx.files_upload(f.read(), dest_path) + + else: + upload_session_start_result = dbx.files_upload_session_start(f.read(CHUNK_SIZE)) + cursor = dropbox.files.UploadSessionCursor( + session_id=upload_session_start_result.session_id, offset=f.tell() + ) + commit = dropbox.files.CommitInfo(path=dest_path, mode=dropbox.files.WriteMode("overwrite")) + + while f.tell() < file_size: + if (file_size - f.tell()) <= CHUNK_SIZE: + print(dbx.files_upload_session_finish(f.read(CHUNK_SIZE), cursor, commit)) + else: + dbx.files_upload_session_append(f.read(CHUNK_SIZE), cursor.session_id, cursor.offset) + cursor.offset = f.tell() + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="Upload a file to Dropbox.") + parser.add_argument("token", help="Your Dropbox OAuth2 token.") + args = parser.parse_args() + + db_prefix = "/HAN Lab Public Space/Projects/TinyChatEngine/assets and models/QM_CUDA/" + local_prefix = "uploads" + + for file in files_to_upload: + subebackups(file, db_prefix + file, args.token) diff --git a/requirements.txt b/requirements.txt index c56506df..2bed2b0d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,4 +2,5 @@ requests tqdm torch transformers -pillow \ No newline at end of file +pillow +huggingface_hub \ No newline at end of file