Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
DeepSpeed
提交
49b6a632
D
DeepSpeed
项目概览
Greenplum
/
DeepSpeed
上一次同步 大约 1 年
通知
10
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
DeepSpeed
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
49b6a632
编写于
8月 26, 2021
作者:
R
Reza Yazdani
提交者:
GitHub
8月 26, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Reducing the memory-overhead of creating model for multi-GPU run (#1244)
Co-authored-by:
N
Jeff Rasley
<
jerasley@microsoft.com
>
上级
274c375c
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
12 addition
and
14 deletion
+12
-14
deepspeed/inference/engine.py
deepspeed/inference/engine.py
+9
-14
deepspeed/module_inject/replace_module.py
deepspeed/module_inject/replace_module.py
+3
-0
未找到文件。
deepspeed/inference/engine.py
浏览文件 @
49b6a632
...
...
@@ -44,15 +44,6 @@ class InferenceEngine(Module):
self
.
quantize_merge_count
=
1
self
.
quantization_scales
=
None
if
self
.
mpu
:
self
.
mp_world_size
=
dist
.
get_world_size
(
group
=
self
.
mpu
.
get_model_parallel_group
())
self
.
mp_group
=
self
.
mpu
.
get_model_parallel_group
()
elif
self
.
mp_world_size
>
1
and
not
dist
.
is_initialized
():
self
.
_create_model_parallel_group
()
else
:
self
.
module
.
to
(
torch
.
cuda
.
current_device
())
self
.
_check_quantize_setting
(
quantization_setting
)
if
self
.
checkpoint
:
...
...
@@ -62,6 +53,13 @@ class InferenceEngine(Module):
if
self
.
dtype
:
self
.
_convert_to_dtype
()
if
self
.
mpu
:
self
.
mp_world_size
=
dist
.
get_world_size
(
group
=
self
.
mpu
.
get_model_parallel_group
())
self
.
mp_group
=
self
.
mpu
.
get_model_parallel_group
()
elif
self
.
mp_world_size
>
1
and
not
dist
.
is_initialized
():
self
.
_create_model_parallel_group
()
# apply injection policy
if
self
.
injection_dict
:
for
client_module
,
injection_policy
in
self
.
injection_dict
.
items
():
...
...
@@ -69,6 +67,8 @@ class InferenceEngine(Module):
elif
replace_method
==
'auto'
:
self
.
_apply_injection_policy
()
self
.
module
.
to
(
torch
.
cuda
.
current_device
())
if
self
.
mp_world_size
>
1
:
self
.
model_orig_fwd
=
self
.
module
.
forward
self
.
module
.
forward
=
self
.
forward
...
...
@@ -96,11 +96,6 @@ class InferenceEngine(Module):
ranks
=
[
i
for
i
in
range
(
self
.
mp_world_size
)]
self
.
mp_group
=
dist
.
new_group
(
ranks
)
self
.
module
.
to
(
torch
.
cuda
.
current_device
())
for
p
in
self
.
module
.
parameters
():
if
torch
.
is_tensor
(
p
):
dist
.
broadcast
(
p
,
0
)
def
_check_quantize_setting
(
self
,
quantization_setting
):
self
.
quatize_bits
=
8
self
.
mlp_extra_grouping
=
False
...
...
deepspeed/module_inject/replace_module.py
浏览文件 @
49b6a632
...
...
@@ -137,6 +137,9 @@ def replace_transformer_layer(orig_layer_impl,
if
inference
:
hidden_size
,
num_attention_heads
=
policy
.
get_hidden_heads
()
assert
num_attention_heads
%
mp_size
==
0
,
\
"To run the model parallel across the GPUs, the attention_heads require to be divisible by the world_size!"
+
\
"This is because the attention computation is partitioned evenly among the parallel GPUs."
attn_linear_layer
,
qkvw
,
qkvb
,
dense_w
,
dense_b
,
scale_attention
=
policy
.
attention
()
mlp_linear_layer
,
_h4h_w
,
_h4h_b
,
_4hh_w
,
_4hh_b
=
policy
.
mlp
()
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录