-
AAAAA
-
BBBBB
-
BBBBB
本系列围绕 CSS
展开,谈一些有趣的话题,内容天马行空,想到什么说什么,不仅是为了拓宽解决问题的思路,更涉及一些容易忽视或是十分有趣的 CSS 细节。
持续更新中,觉得不错的可以点个 star
订阅收藏。
所有文章都在 Issues 中,同步更新到我的个人博客,也可以点击下面链接进行跳转。
本 CSS
系列同步更新在我的博客:
123
如何实现下列这种多列均匀布局:
看看下图,常见于一些导航栏中,要求每行中最后一列的右边框消失,如何在所有浏览器中最便捷最优雅的实现?
不用 Javascript
,使用纯 CSS
方案,实现类似下图的导航栏 Tab 切换:
规定下面的布局,实现多列等高布局,要求两列背景色等高。
<div class="container">
<div class="left">多列等高布局左</div>
<div class="right">多列等高布局右</div>
</div>
10、巧妙的实现 CSS 斜线
使用单个标签,如何实现下图所示的斜线效果:
12、结构性伪类选择器
如何实现下述的背景色渐变动画?
col
产品 | 是否支持 |
---|---|
昇腾910_95 AI处理器 | × |
Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |
Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件 | √ |
Atlas 200I/500 A2推理产品 | × |
Atlas 推理系列产品 | √ |
Atlas 训练系列产品 | √ |
Atlas 200/300/500 推理产品 | × |
- 算子功能:根据indices从weight中获得一组被聚合的数,然后根据offsets的偏移和mode指定的聚合模式对获取的数进行max、sum、mean聚合。其余参数则更细化了计算过程的控制。
- shape推导方式如下:
假设:
weight的shape为(numWeight, embeddingDim) indices的shape为(indices) offsets的shape为(offsets)
- 当mode为sum模式:
y的shape 为 include_last_offset ? (offsets - 1, embeddingDim) : (offsets, embeddingDim) offset2bag的shape 为 (indices,) bag_size的shape 为 include_last_offset ? (offsets - 1) : (offsets,) max_indices的shape 为 include_last_offset ? (offsets - 1) : (offsets,)
- 当mode为mean模式:
y的shape 为 include_last_offset? (offsets - 1, embeddingDim) : (offsets, embeddingDim) offset2bag的shape 为 (indices,) bag_size的shape 为 include_last_offset ? (offsets - 1) : (offsets,) max_indices的shape 为 include_last_offset ? (offsets - 1) : (offsets,)
- 当mode为max模式:
y的shape 为 include_last_offset ? (offsets - 1, embeddingDim) : (offsets, embeddingDim) offset2bag的shape 为 (indices,) bag_size的shape 为 include_last_offset ? (offsets - 1) : (offsets,) max_indices的shape 为 include_last_offset ? (offsets - 1, embeddingDim) : (offsets, embeddingDim)
- 当mode为sum模式:
- shape推导方式如下:
假设:
参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
---|---|---|---|---|
weight | 输入 | 词嵌入矩阵,包含所有词的嵌入向量。 | FLOAT、FLOAT16、BFLOAT16 | ND |
indices | 输入 | 包含索引的张量,指定要从weight中提取哪些词的嵌入向量。 | INT32、INT64 | ND |
offsets | 可选输入 | 用于将indices分割成多个bag的偏移量张量。 | INT32、INT64 | ND |
per_sample_weights | 可选输入 | 指定样本权重。 | FLOAT、FLOAT16、BFLOAT16 | ND |
y | 输出 | 词嵌入矩阵聚合后的结果。 | INT32、INT64 | ND |
offset2bag | 输出 | bag的起始偏移。 | INT32、INT64 | ND |
bag_size | 输出 | 每个bag的大小。 | INT32、INT64 | ND |
max_indices | 输出 | 当mode为max时,词嵌入向量最大值所在的行。 | INT32、INT64 | ND |
mode | 可选属性 |
|
String | - |
scale_grad_by_freq | 可选属性 |
|
Bool | - |
sparse | 可选属性 |
|
Bool | - |
include_last_offset | 可选属性 |
|
Bool | - |
padding_idx | 可选属性 |
|
Int | - |
- Atlas 训练系列产品:不支持BFLOAT16。
无
调用方式 | 调用样例 | 说明 |
---|---|---|
aclnn调用 | test_aclnn_embedding_bag | 通过aclnnEmbeddingBag接口方式调用EmbeddingBag算子。 |
图模式调用 | test_geir_embedding_bag | 通过算子IR构图方式调用EmbeddingBag算子。 |
操作 | 耗时 |
---|---|
Scatter | |
Gather | |
Broadcast | |
Reduce | $ (p-1)(\alpha+n\beta + n\gamma)=(p-1)\alpha+ (p-1)n\beta +(p-1)n\gamma$ |
ReduceScatter | $ (p-1)(\alpha+\frac{n}{p}\beta+\frac{n}{p}\gamma)=(p-1)\alpha+\frac{p-1}{p}n\beta+\frac{p-1}{p}n\gamma $ |
AllGather | $ (p-1)(\alpha+\frac{n}{p}\beta)=(p-1)\alpha+\frac{p-1}{p}n\beta $ |
AllReduce | 实现为ReduceScatter + Allgather: $ 2(p-1)\alpha+2\frac{p-1}{p}n\beta+\frac{p-1}{p}n\gamma $ |