Commit f0129d66 authored by wangkaixiong's avatar wangkaixiong 🚴🏼
Browse files

init version

parent 734788aa
#!/bin/bash
# 设置日志目录
LOG_DIR="./log_downloads"
CACHE_DIR="./"
# 检查并创建日志目录
if [ ! -d "$LOG_DIR" ]; then
echo "创建日志目录: $LOG_DIR"
mkdir -p "$LOG_DIR"
fi
# 检查并创建缓存目录
if [ ! -d "$CACHE_DIR" ]; then
echo "创建缓存目录: $CACHE_DIR"
mkdir -p "$CACHE_DIR"
fi
# 要下载的模型列表
MODELS=(
"deepseek-ai/DeepSeek-R1-0528"
"Qwen/Qwen3-235B-A22B-GPTQ-Int4"
"Qwen/Qwen3-235B-A22B"
)
# 遍历并下载每个模型
for MODEL_ID in "${MODELS[@]}"; do
echo "开始下载模型: $MODEL_ID"
python3 model_downloader.py \
--model-id "$MODEL_ID" \
--cache-dir "$CACHE_DIR" \
--log-dir "$LOG_DIR"
# 检查上一个命令的退出状态
if [ $? -eq 0 ]; then
echo "模型 $MODEL_ID 下载完成"
else
echo "模型 $MODEL_ID 下载失败"
fi
done
echo "所有模型下载任务完成"
import time
import argparse
import logging
from datetime import datetime
from modelscope import snapshot_download
from requests.exceptions import ConnectionError
from urllib3.exceptions import MaxRetryError
def setup_logging(log_file):
"""������־��¼"""
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s',
handlers=[
logging.FileHandler(log_file),
logging.StreamHandler()
]
)
return logging.getLogger(__name__)
def download_model_with_retry(model_name, cache_dir, max_retries=100, retry_delay=10):
logger = logging.getLogger(__name__)
retries = 0
while retries < max_retries:
try:
logger.info(f"��������� (�� {retries + 1} ��)...")
model_dir = snapshot_download(model_name, cache_dir=cache_dir)
logger.info("ģ�����سɹ�!")
return model_dir
except (ConnectionError, MaxRetryError) as e:
retries += 1
logger.error(f"����ʧ��: {str(e)}")
if retries < max_retries:
logger.info(f"{retry_delay}�������...")
time.sleep(retry_delay)
retry_delay *= 2 # ָ���˱�
else:
logger.error(f"�Ѵﵽ������Դ��� {max_retries}������ʧ�ܡ�")
raise
except Exception as e:
logger.error(f"����δ֪����: {str(e)}")
raise
def main():
# �����������
parser = argparse.ArgumentParser(description='����ģ�ͽű�')
parser.add_argument('--model-id', type=str, required=True,
help='Ҫ���ص�ģ��ID������ deepseek-ai/DeepSeek-R1-0528')
parser.add_argument('--cache-dir', type=str, required=True,
help='ģ�ͻ���Ŀ¼·��')
parser.add_argument('--log-dir', type=str, default='./log_downloads',
help='��־�ļ�Ŀ¼·��')
parser.add_argument('--max-retries', type=int, default=100,
help='������Դ�����Ĭ��Ϊ100')
parser.add_argument('--retry-delay', type=int, default=10,
help='��ʼ�����ӳ�ʱ��(��)��Ĭ��Ϊ10��')
args = parser.parse_args()
# ������־�ļ���
model_id_simple = args.model_id.replace('/', '_')
current_date = datetime.now().strftime('%Y%m%d')
log_file = f"{args.log_dir}/{model_id_simple}_{current_date}.log"
# ������־
logger = setup_logging(log_file)
try:
logger.info(f"��ʼ����ģ��: {args.model_id}")
logger.info(f"����Ŀ¼: {args.cache_dir}")
logger.info(f"��־�ļ�: {log_file}")
model_dir = download_model_with_retry(
args.model_id,
cache_dir=args.cache_dir,
max_retries=args.max_retries,
retry_delay=args.retry_delay
)
except Exception as e:
logger.error(f"��������ʧ��: {str(e)}")
else:
logger.info(f"ģ�������ص�: {model_dir}")
if __name__ == "__main__":
main()
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment