| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- # download_models.py
- from huggingface_hub import snapshot_download
- import os
- import shutil # [新增] 引入 shutil 模块用于删除非空目录
- import time
- def download_model(model_name, local_dir):
- """
- 下载Hugging Face模型到本地目录
- Args:
- model_name: Hugging Face模型名称
- local_dir: 本地保存目录
- """
- print(f"开始下载模型: {model_name}")
- print(f"保存到: {local_dir}")
- try:
- # 创建目录
- if os.path.exists(local_dir):
- # [修改] 使用 shutil.rmtree 删除目录及其内部所有内容
- shutil.rmtree(local_dir)
- print(f"目录 {local_dir} 已删除")
- time.sleep(5)
- os.makedirs(local_dir, exist_ok=True)
- # 下载模型
- snapshot_download(
- repo_id=model_name,
- local_dir=local_dir,
- local_dir_use_symlinks=False, # 不使用符号链接
- ignore_patterns=["*.safetensors"], # 可选:不下载safetensors格式
- )
- print(f"✓ 模型 {model_name} 下载完成")
- print(f"保存路径: {os.path.abspath(local_dir)}")
- except Exception as e:
- print(f"✗ 下载失败: {e}")
- if __name__ == "__main__":
- # 定义要下载的模型
- models_to_download = [
- ("bert-base-uncased", "./models/bert-base-uncased"),
- ("bert-base-chinese", "./models/bert-base-chinese"),
- ]
- print("开始下载BERT模型...")
- print("=" * 50)
- for model_name, local_dir in models_to_download:
- download_model(model_name, local_dir)
- print()
- print("=" * 50)
- print("所有模型下载完成!")
- print("\n模型文件结构:")
- for model_name, local_dir in models_to_download:
- if os.path.exists(local_dir):
- file_count = len([f for f in os.listdir(local_dir) if os.path.isfile(os.path.join(local_dir, f))])
- print(f" {local_dir}: {file_count} 个文件")
- print("\n使用示例:")
- print("本地模型路径:")
- print(" - 英文: './models/bert-base-uncased'")
- print(" - 中文: './models/bert-base-chinese'")
|