models_download.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. # download_models.py
  2. from huggingface_hub import snapshot_download
  3. import os
  4. import shutil # [新增] 引入 shutil 模块用于删除非空目录
  5. import time
  6. def download_model(model_name, local_dir):
  7. """
  8. 下载Hugging Face模型到本地目录
  9. Args:
  10. model_name: Hugging Face模型名称
  11. local_dir: 本地保存目录
  12. """
  13. print(f"开始下载模型: {model_name}")
  14. print(f"保存到: {local_dir}")
  15. try:
  16. # 创建目录
  17. if os.path.exists(local_dir):
  18. # [修改] 使用 shutil.rmtree 删除目录及其内部所有内容
  19. shutil.rmtree(local_dir)
  20. print(f"目录 {local_dir} 已删除")
  21. time.sleep(5)
  22. os.makedirs(local_dir, exist_ok=True)
  23. # 下载模型
  24. snapshot_download(
  25. repo_id=model_name,
  26. local_dir=local_dir,
  27. local_dir_use_symlinks=False, # 不使用符号链接
  28. ignore_patterns=["*.safetensors"], # 可选:不下载safetensors格式
  29. )
  30. print(f"✓ 模型 {model_name} 下载完成")
  31. print(f"保存路径: {os.path.abspath(local_dir)}")
  32. except Exception as e:
  33. print(f"✗ 下载失败: {e}")
  34. if __name__ == "__main__":
  35. # 定义要下载的模型
  36. models_to_download = [
  37. ("bert-base-uncased", "./models/bert-base-uncased"),
  38. ("bert-base-chinese", "./models/bert-base-chinese"),
  39. ]
  40. print("开始下载BERT模型...")
  41. print("=" * 50)
  42. for model_name, local_dir in models_to_download:
  43. download_model(model_name, local_dir)
  44. print()
  45. print("=" * 50)
  46. print("所有模型下载完成!")
  47. print("\n模型文件结构:")
  48. for model_name, local_dir in models_to_download:
  49. if os.path.exists(local_dir):
  50. file_count = len([f for f in os.listdir(local_dir) if os.path.isfile(os.path.join(local_dir, f))])
  51. print(f" {local_dir}: {file_count} 个文件")
  52. print("\n使用示例:")
  53. print("本地模型路径:")
  54. print(" - 英文: './models/bert-base-uncased'")
  55. print(" - 中文: './models/bert-base-chinese'")