File size: 4,448 Bytes
22fb4ec
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
==================
预训练模型权重
==================

``HuggingFace`` 和 ``ModelScope``
提供了多种下载预训练模型权重的方法,本节将以下载 internlm2-chat-7b
为例,介绍如何快速下载预训练模型的权重。

.. note::

   若 HuggingFace 访问受限,请优先考虑使用 ModelScope 进行下载


[推荐] 方法 1:``snapshot_download``
========================================


HuggingFace
------------

``huggingface_hub.snapshot_download`` 支持下载特定的 HuggingFace Hub
模型权重,并且允许多线程。您可以利用下列代码并行下载模型权重:

.. code:: python

   from huggingface_hub import snapshot_download

   snapshot_download(repo_id='internlm/internlm2-chat-7b', local_dir='./internlm2-chat-7b', max_workers=20)

.. note::

   其中,\ ``repo_id`` 表示模型在 HuggingFace Hub 的名字、\ ``local_dir`` 表示期望存储到的本地路径、\ ``max_workers`` 表示下载的最大并行数。

.. tip::

   如果未指定 ``local_dir``\ ,则将下载至 HuggingFace 的默认 cache 路径中(\ ``~/.cache/huggingface/hub``\ )。若要修改默认 cache 路径,需要修改相关环境变量:

   .. code:: console

      $ # 默认为 `~/.cache/huggingface/`
      $ export HF_HOME=XXXX

.. tip::
   如果觉得下载较慢(例如无法达到最大带宽等情况),可以尝试设置\ ``export HF_HUB_ENABLE_HF_TRANSFER=1`` 以获得更高的下载速度。

.. tip::
   关于环境变量的更多用法,可阅读\ `这里 <https://huggingface.co/docs/huggingface_hub/main/en/package_reference/environment_variables>`__ 。


ModelScope
-----------

``modelscope.snapshot_download``
支持下载指定的模型权重,您可以利用下列命令下载模型:

.. code:: python

   from modelscope import snapshot_download

   snapshot_download(model_id='Shanghai_AI_Laboratory/internlm2-chat-7b', cache_dir='./internlm2-chat-7b')

.. note::
   其中,\ ``model_id`` 表示模型在 ModelScope 模型库的名字、\ ``cache_dir`` 表示期望存储到的本地路径。


.. note::
   ``modelscope.snapshot_download`` 不支持多线程并行下载。

.. tip::

   如果未指定 ``cache_dir``\ ,则将下载至 ModelScope 的默认 cache 路径中(\ ``~/.cache/huggingface/hub``\ )。

   若要修改默认 cache 路径,需要修改相关环境变量:

   .. code:: console

      $ # 默认为 ~/.cache/modelscope/hub/
      $ export MODELSCOPE_CACHE=XXXX



方法 2: Git LFS
===================

HuggingFace 和 ModelScope 的远程模型仓库就是一个由 Git LFS 管理的 Git
仓库。因此,我们可以利用 ``git clone`` 完成权重的下载:

.. code:: console

   $ git lfs install
   $ # From HuggingFace
   $ git clone https://huggingface.co/internlm/internlm2-chat-7b
   $ # From ModelScope
   $ git clone https://www.modelscope.cn/Shanghai_AI_Laboratory/internlm2-chat-7b.git


方法 3:``AutoModelForCausalLM``
=====================================================

``AutoModelForCausalLM.from_pretrained``
在初始化模型时,将尝试连接远程仓库并自动下载模型权重。因此,我们可以利用这一特性下载模型权重。

HuggingFace
------------

.. code:: python

   from transformers import AutoModelForCausalLM, AutoTokenizer

   model = AutoModelForCausalLM.from_pretrained('internlm/internlm2-chat-7b', trust_remote_code=True)
   tokenizer = AutoTokenizer.from_pretrained('internlm/internlm2-chat-7b', trust_remote_code=True)

.. tip::

   此时模型将会下载至 HuggingFace 的 cache 路径中(默认为\ ``~/.cache/huggingface/hub``\ )。

   若要修改默认存储路径,需要修改相关环境变量:

   .. code:: console

      $ # 默认为 `~/.cache/huggingface/`
      $ export HF_HOME=XXXX

ModelScope
-----------

.. code:: python

   from modelscope import AutoModelForCausalLM, AutoTokenizer

   model = AutoModelForCausalLM.from_pretrained('Shanghai_AI_Laboratory/internlm2-chat-7b', trust_remote_code=True)
   tokenizer = AutoTokenizer.from_pretrained('Shanghai_AI_Laboratory/internlm2-chat-7b', trust_remote_code=True)

.. tip::

   此时模型将会下载至 ModelScope 的 cache 路径中(默认为\ ``~/.cache/modelscope/hub``\ )。

   若要修改默认存储路径,需要修改相关环境变量:

   .. code:: console

      $ # 默认为 ~/.cache/modelscope/hub/
      $ export MODELSCOPE_CACHE=XXXX