Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Docs][cn] make the word case correct #4964

Merged
merged 9 commits into from
Jul 27, 2022
Merged
2 changes: 1 addition & 1 deletion docs/design/dynamic_rnn/rnn_design.md
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,7 @@ x x
- 将每个序列concat 为规则的mini-batch表示

## 参考文献
[Tensorflow Bucketing](https://www.tensorflow.org/versions/r0.12/api_docs/python/contrib.training/bucketing)
[TensorFlow Bucketing](https://www.tensorflow.org/versions/r0.12/api_docs/python/contrib.training/bucketing)

[mxnet Bucketing](http://mxnet.io/how_to/bucketing.html)

Expand Down
2 changes: 1 addition & 1 deletion docs/design/modules/regularization.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,4 +63,4 @@ Since we want to create the regularization ops in a lazy manner, the regularizat

#### High-level API

In PaddlePaddle Python API, users will primarily rely on [layer functions](https://github.com/PaddlePaddle/FluidDoc/blob/develop/doc/fluid/design/modules/python_api.md#layer-function) to create neural network layers. Hence, we also need to provide regularization functionality in layer functions. The design of these APIs can be postponed for later right now. A good reference for these APIs can be found in [Keras](https://keras.io/regularizers/) and also by looking at Tensorflow in [`tf.contrib.layers`](https://www.tensorflow.org/api_guides/python/contrib.layers).
In PaddlePaddle Python API, users will primarily rely on [layer functions](https://github.com/PaddlePaddle/FluidDoc/blob/develop/doc/fluid/design/modules/python_api.md#layer-function) to create neural network layers. Hence, we also need to provide regularization functionality in layer functions. The design of these APIs can be postponed for later right now. A good reference for these APIs can be found in [Keras](https://keras.io/regularizers/) and also by looking at TensorFlow in [`tf.contrib.layers`](https://www.tensorflow.org/api_guides/python/contrib.layers).
2 changes: 1 addition & 1 deletion docs/design/network/deep_speech_2.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ Intensive system optimization and low-latency inference library (details in \[[1
We roughly break down the project into 14 tasks:

1. Develop an **audio data provider**:
- Json filelist generator.
- JSON filelist generator.
- Audio file format transformer.
- Spectrogram feature extraction, power normalization etc.
- Batch data reader with SortaGrad.
Expand Down
4 changes: 2 additions & 2 deletions docs/design/others/graph_survey.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ Varible here is actually a Symbol. Every basic Symbol will correspond to one Nod

Symbol contains a data member, std::vector<NodeEntry> outputs, and NodeEntry cantains a poniter to Node. We can follow the Node pointer to get all the Graph.

And Symbol can be saved to a Json file.
And Symbol can be saved to a JSON file.

Here is a detailed example:

Expand Down Expand Up @@ -78,7 +78,7 @@ Attrs:
### TensorFlow


The core concept of symbolic API is `Tensor`. Tensorflow defines `Tensor` in Python. Please refer to the comments in TensorFlow:
The core concept of symbolic API is `Tensor`. TensorFlow defines `Tensor` in Python. Please refer to the comments in TensorFlow:

A `Tensor` is a symbolic handle to one of the outputs of an `Operation`. It does not hold the values of that operation's output, but instead provides a means of computing those values in a TensorFlow [Session](https://www.tensorflow.org/api_docs/python/tf/Session).

Expand Down
8 changes: 4 additions & 4 deletions docs/design/phi/design.md
Original file line number Diff line number Diff line change
Expand Up @@ -527,12 +527,12 @@ Tensor scale(const Tensor& x,

**如何自动生成C++ API?**

C++ API的自动生成是通过解析Yaml配置文件来进行生成的,Yaml配置文件分为
C++ API的自动生成是通过解析 YAML 配置文件来进行生成的,YAML 配置文件分为

- 前向API配置文件(`Python/paddle/utils/code_gen/api.yaml`,解析后生成代码文件为`paddle/phi/api/include/api.h`和`paddle/phi/api/lib/api.cc`)
- 反向API配置文件(`Python/paddle/utils/code_gen/backward.yaml`,解析后生成的代码文件为`paddle/phi/api/backward/backward_api.h`和`paddle/phi/api/lib/backward_api.cc`)。

C++ API生成的关键在于Yaml文件的配置,以matmul为例,其前向和反向的配置文件如下:
C++ API生成的关键在于 YAML 文件的配置,以matmul为例,其前向和反向的配置文件如下:

```
# 前向API配置
Expand Down Expand Up @@ -567,9 +567,9 @@ C++ API生成的关键在于Yaml文件的配置,以matmul为例,其前向和
- func:kernel函数的注册名(REGISTER使用的name,非函数名),默认输入为args项的所有参数和output参数
- backward:(可选)对应的反向函数名称,没有则生成纯前向API。

Yaml解析脚本将根据上述配置项自动生成对应的C++ API,生成的代码中会完成包括Kernel自动选择、Tensor转换、Data Transform、InferMeta以及Kernel调用等相关处理逻辑,具体可参考生成的`api.cc`内代码。
YAML 解析脚本将根据上述配置项自动生成对应的C++ API,生成的代码中会完成包括Kernel自动选择、Tensor转换、Data Transform、InferMeta以及Kernel调用等相关处理逻辑,具体可参考生成的`api.cc`内代码。

由于C++ API数量较多,且有着各种各样的形式与功能,为此在Yaml配置机制上也提供了很多更为灵活的配置项,如`invoke`等。
由于C++ API数量较多,且有着各种各样的形式与功能,为此在 YAML 配置机制上也提供了很多更为灵活的配置项,如`invoke`等。

### 2.3.4 Kernel形式、注册及管理

Expand Down
14 changes: 7 additions & 7 deletions docs/dev_guides/api_contributing_guides/new_cpp_op_cn.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@

算子描述及定义是定义运算的基本属性,主要包括算子的输入、输出以及各项非计算逻辑的配置,这些都是设备无关的。

### 2.1 算子Yaml文件配置
我们在`python/paddle/utils/code_gen/api.yaml`和`python/paddle/utils/code_gen/backward.yaml`文件中对算子进行描述及定义,在框架编译时会根据Yaml文件中的配置自动生成C++端的相关代码接口以及内部实现(详见[Paddle基于Yaml配置的算子代码自动生成](new_cpp_op_cn.md#paddleyaml)),下面主要以Trace为例介绍算子的Yaml配置规则
### 2.1 算子 YAML 文件配置
我们在`python/paddle/utils/code_gen/api.yaml`和`python/paddle/utils/code_gen/backward.yaml`文件中对算子进行描述及定义,在框架编译时会根据 YAML 文件中的配置自动生成C++端的相关代码接口以及内部实现(详见[Paddle 基于 YAML 配置的算子代码自动生成](new_cpp_op_cn.md#paddleyaml)),下面主要以Trace为例介绍算子的 YAML 配置规则

python/paddle/utils/code_gen/api.yaml:
```yaml
Expand Down Expand Up @@ -938,7 +938,7 @@ PADDLE_ENFORCE_EQ(比较对象A, 比较对象B, 错误提示信息)
#### 6.3.1 为可原位计算的算子注册inplace
有些算子的计算逻辑中,输出可以复用输入的显存空间,也可称为原位计算。例如[reshape](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/phi/kernels/reshape_kernel.cc)中,输出`out`可以复用输入`x`的显存空间,因为该算子的计算逻辑不会改变`x`的实际数据,只是修改它的shape,输出和输入复用同一块显存空间不影响结果。对于这类算子,可以注册`inlace`,从而让框架在运行时自动地进行显存优化。

注册方式为在算子的Yaml配置中添加`inplace`配置项,格式如:`(x -> out)`,详见[Yaml配置规则](new_cpp_op_cn.html#yaml)。示例:
注册方式为在算子的 YAML 配置中添加`inplace`配置项,格式如:`(x -> out)`,详见[YAML 配置规则](new_cpp_op_cn.html#yaml)。示例:

```yaml
- api : reshape
Expand All @@ -954,7 +954,7 @@ PADDLE_ENFORCE_EQ(比较对象A, 比较对象B, 错误提示信息)
所以在定义反向算子时需要注意以下几点:

- 如果反向不需要前向的某些输入或输出参数,则无需在args中设置。
- 如果有些反向算子需要依赖前向算子的输入或输出变量的的Shape或LoD,但不依赖于变量中Tensor的内存Buffer数据,且不能根据其他变量推断出该Shape和LoD,则可以通过`no_need_buffer`对该变量进行配置,详见[Yaml配置规则](new_cpp_op_cn.html#yaml)。示例:
- 如果有些反向算子需要依赖前向算子的输入或输出变量的的Shape或LoD,但不依赖于变量中Tensor的内存Buffer数据,且不能根据其他变量推断出该Shape和LoD,则可以通过`no_need_buffer`对该变量进行配置,详见[YAML 配置规则](new_cpp_op_cn.html#yaml)。示例:
```yaml
- backward_api : trace_grad
forward : trace (Tensor x, int offset, int axis1, int axis2) -> Tensor(out)
Expand Down Expand Up @@ -1063,11 +1063,11 @@ The following device operations are asynchronous with respect to the host:


## 7. 补充
### 7.1 Paddle基于Yaml配置的算子代码自动生成
Paddle支持动态图和静态图两种模式,在Yaml配置文件中完成算子基本属性的定义后,需要进行解析并分别生成动态图和静态图所对应的算子代码逻辑,从而将算子接入框架的执行体系。基于Yaml配置的算子代码自动生成示意图
### 7.1 Paddle 基于 YAML 配置的算子代码自动生成
Paddle 支持动态图和静态图两种模式,在 YAML 配置文件中完成算子基本属性的定义后,需要进行解析并分别生成动态图和静态图所对应的算子代码逻辑,从而将算子接入框架的执行体系。基于 YAML 配置的算子代码自动生成示意图
![code_gen_by_yaml](./code_gen_by_yaml.png)

- 其中Yaml配置文件为前向:`python/paddle/utils/code_gen/api.yaml` 和反向:`python/paddle/utils/code_gen/backward.yaml`。
- 其中 YAML 配置文件为前向:`python/paddle/utils/code_gen/api.yaml` 和反向:`python/paddle/utils/code_gen/backward.yaml`。
- 动态图中自动生成的代码包括从Python API到计算Kernel间的各层调用接口实现,从底层往上分别为:
- C++ API:一套与Python API参数对齐的C++接口(只做逻辑计算,不支持自动微分),内部封装了底层kernel的选择和调用等逻辑,供上层灵活使用。
- 注:前向算子生成C++ API头文件和实现代码分别为`paddle/phi/api/include/api.h`和`paddle/phi/api/lib/api.cc`,反向算子生成的头文件和实现代码分别为`paddle/phi/api/backward/backward_api.h`,`paddle/phi/api/lib/backward_api.cc`。
Expand Down
8 changes: 4 additions & 4 deletions docs/dev_guides/api_contributing_guides/new_python_api_cn.md
Original file line number Diff line number Diff line change
Expand Up @@ -211,9 +211,9 @@ if _in_legacy_dygraph():

`_C_ops` 是 `Python/paddle/_C_ops.py`,其中从 paddle 编译得到的二进制文件中 import 了 c++ 算子对应的 Python C 函数。

- 在新动态图模式下,Python C 的调用函数名为`final_state_` + 算子名,然后将参数按照Yaml中定义的输入参数顺序传入即可
- 在新动态图模式下,Python C 的调用函数名为`final_state_` + 算子名,然后将参数按照 YAML 中定义的输入参数顺序传入即可
- 在旧动态图模式下,Python C 函数名和算子名一致。如希望调用名为 `trace` 的算子,则使用 `_C_ops.trace`, 然后传入参数。其中参数分为两个部分:
- 对于 `Tensor` 类型的输入,直接按照Yaml中的定义,按位置传参的方式传入
- 对于 `Tensor` 类型的输入,直接按照 YAML 中的定义,按位置传参的方式传入
- 对于非 `Tensor` 类型的输入,则以 `attribute 名,attribute 值` 交替的方式传入,这类似 Python 中的按关键字传参的方式。然后返回调用函数得到的结果。


Expand All @@ -239,8 +239,8 @@ helper.append_op(
outputs={'Out': [out]})
return out
```
注意:在`append_op`添加的`inputs`和`outputs`项,其中的key值(静态图中变量名)一般为Yaml中定义的输入输出Tensor变量名的首字母大写格式,静态图中的变量名可以在`paddle/fluid/operators/generated_op.cc`(需要先开发C++算子并完成编译)文件内对应算子的`OpMaker`中找到;`attrs`项的变量名与Yaml中相同
这里`trace`中的'Input'没有与Yaml配置的中'x'直接对应是由于为了兼容旧算子体系下`Trace`算子的`OpMaker`实现而做了额外的映射,新增算子时无需考虑这种情况。
注意:在`append_op`添加的`inputs`和`outputs`项,其中的key值(静态图中变量名)一般为 YAML 中定义的输入输出Tensor变量名的首字母大写格式,静态图中的变量名可以在`paddle/fluid/operators/generated_op.cc`(需要先开发C++算子并完成编译)文件内对应算子的`OpMaker`中找到;`attrs`项的变量名与 YAML 中相同
这里`trace`中的'Input'没有与 YAML 配置的中'x'直接对应是由于为了兼容旧算子体系下`Trace`算子的`OpMaker`实现而做了额外的映射,新增算子时无需考虑这种情况。


## 开发单元测试代码
Expand Down
2 changes: 1 addition & 1 deletion docs/dev_guides/git_guides/local_dev_guide_en.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ You will learn how to develop programs in local environment under the guidelines
The following guidiance tells you how to submit code.
## [Fork](https://help.github.com/articles/fork-a-repo/)

Transfer to the home page of Github [PaddlePaddle](https://github.com/PaddlePaddle/Paddle) ,and then click button `Fork` to generate the git under your own file directory,such as <https://github.com/USERNAME/Paddle>。
Transfer to the home page of GitHub [PaddlePaddle](https://github.com/PaddlePaddle/Paddle) ,and then click button `Fork` to generate the git under your own file directory,such as <https://github.com/USERNAME/Paddle>。

## Clone

Expand Down
2 changes: 1 addition & 1 deletion docs/dev_guides/git_guides/paddle_ci_manual_cn.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ git commit -m 'test=document_fix'

### CLA

贡献者许可证协议[Contributor License Agreements](https://cla-assistant.io/PaddlePaddle/Paddle)是指当你要给Paddle贡献代码的时候,需要签署的一个协议。如果不签署那么你贡献给 Paddle 项目的修改,即`PR`会被 Github 标志为不可被接受,签署了之后,这个`PR`就是可以在 review 之后被接受了。
贡献者许可证协议[Contributor License Agreements](https://cla-assistant.io/PaddlePaddle/Paddle)是指当你要给Paddle贡献代码的时候,需要签署的一个协议。如果不签署那么你贡献给 Paddle 项目的修改,即`PR`会被 GitHub 标志为不可被接受,签署了之后,这个`PR`就是可以在 review 之后被接受了。

### CheckPRTemplate

Expand Down
2 changes: 1 addition & 1 deletion docs/dev_guides/git_guides/submit_pr_guide_en.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Guide of submitting PR to Github
# Guide of submitting PR to GitHub

## Tthe submit of Pull Request

Expand Down
2 changes: 1 addition & 1 deletion docs/eval/evaluation_of_docs_system.md
Original file line number Diff line number Diff line change
Expand Up @@ -835,7 +835,7 @@ Paddle 当前文档中的 Tutorial,特别是初级内容部分,都很好的

想为飞桨开源项目增加功能的用户,可以参考 [自定义算子](https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/07_new_op/index_cn.html) 了解如何增加算子,以及 [参与开发](https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/10_contribution/index_cn.html) 了解提交 PR 的流程。

不过,其它框架,一般会有文档介绍它组件中的设计理念和原理,如 Pytorch 的这篇 [autograd](https://pytorch.org/docs/stable/notes/autograd.html),OneFlow 的一些 [技术博客](https://zhuanlan.zhihu.com/p/337851255),以及 MindSpore 的 [设计文档](https://www.mindspore.cn/docs/programming_guide/zh-CN/r1.6/design/technical_white_paper.html) (这个信息量偏薄弱点)。
不过,其它框架,一般会有文档介绍它组件中的设计理念和原理,如 PyTorch 的这篇 [autograd](https://pytorch.org/docs/stable/notes/autograd.html),OneFlow 的一些 [技术博客](https://zhuanlan.zhihu.com/p/337851255),以及 MindSpore 的 [设计文档](https://www.mindspore.cn/docs/programming_guide/zh-CN/r1.6/design/technical_white_paper.html) (这个信息量偏薄弱点)。

在 Paddle 的文档体系中,好像没有找到类似的内容,这对于想学习 Paddle 底层原理甚至参与开源建设的爱好者,是一种遗憾。希望可以考虑推出。

Expand Down
Loading