未验证 提交 db196491 编写于 作者: Y Yibing Liu 提交者: GitHub

Tiny update (#75)

上级 42bbcb15
## Teacher ## Teacher
pantheon.Teacher()[source code](https://github.com/PaddlePaddle/PaddleSlim/blob/develop/paddleslim/pantheon/teacher.py#L78) pantheon.Teacher() [source](https://github.com/PaddlePaddle/PaddleSlim/blob/develop/paddleslim/pantheon/teacher.py#L78)
: The class defined for the teacher model. Generate knowledge data and transfer them to the student model. : The class defined for the teacher model. Generate knowledge data and transfer them to the student model.
...@@ -13,7 +13,7 @@ pantheon.Teacher()[source code](https://github.com/PaddlePaddle/PaddleSlim/blob/ ...@@ -13,7 +13,7 @@ pantheon.Teacher()[source code](https://github.com/PaddlePaddle/PaddleSlim/blob/
**Return:** An object of class Teacher **Return:** An object of class Teacher
pantheon.Teacher.start()[source code](https://github.com/PaddlePaddle/PaddleSlim/blob/develop/paddleslim/pantheon/teacher.py#L133) pantheon.Teacher.start() [source](https://github.com/PaddlePaddle/PaddleSlim/blob/develop/paddleslim/pantheon/teacher.py#L133)
: Start teacher service, sychronize with student and launch the thread : Start teacher service, sychronize with student and launch the thread
to monitor commands from student. to monitor commands from student.
...@@ -23,7 +23,7 @@ pantheon.Teacher.start()[source code](https://github.com/PaddlePaddle/PaddleSlim ...@@ -23,7 +23,7 @@ pantheon.Teacher.start()[source code](https://github.com/PaddlePaddle/PaddleSlim
**Return:** None **Return:** None
pantheon.Teacher.send(data)[source code](https://github.com/PaddlePaddle/PaddleSlim/blob/develop/paddleslim/pantheon/teacher.py#L181) pantheon.Teacher.send(data) [source](https://github.com/PaddlePaddle/PaddleSlim/blob/develop/paddleslim/pantheon/teacher.py#L181)
: Send one data object to student. : Send one data object to student.
...@@ -34,7 +34,7 @@ pantheon.Teacher.send(data)[source code](https://github.com/PaddlePaddle/PaddleS ...@@ -34,7 +34,7 @@ pantheon.Teacher.send(data)[source code](https://github.com/PaddlePaddle/PaddleS
**Return:** None **Return:** None
pantheon.Teacher.recv()[source code](https://github.com/PaddlePaddle/PaddleSlim/blob/develop/paddleslim/pantheon/teacher.py#L196) pantheon.Teacher.recv() [source](https://github.com/PaddlePaddle/PaddleSlim/blob/develop/paddleslim/pantheon/teacher.py#L196)
: Recieve one data object from student. : Recieve one data object from student.
...@@ -45,7 +45,7 @@ pantheon.Teacher.recv()[source code](https://github.com/PaddlePaddle/PaddleSlim/ ...@@ -45,7 +45,7 @@ pantheon.Teacher.recv()[source code](https://github.com/PaddlePaddle/PaddleSlim/
- The received data, can be any type of Python data object. - The received data, can be any type of Python data object.
pantheon.Teacher.dump(knowledge)[source code](https://github.com/PaddlePaddle/PaddleSlim/blob/develop/paddleslim/pantheon/teacher.py#L214) pantheon.Teacher.dump(knowledge) [source](https://github.com/PaddlePaddle/PaddleSlim/blob/develop/paddleslim/pantheon/teacher.py#L214)
: Dump one batch knowledge data into the output file, only used in the offline mode. : Dump one batch knowledge data into the output file, only used in the offline mode.
...@@ -56,7 +56,7 @@ pantheon.Teacher.dump(knowledge)[source code](https://github.com/PaddlePaddle/Pa ...@@ -56,7 +56,7 @@ pantheon.Teacher.dump(knowledge)[source code](https://github.com/PaddlePaddle/Pa
**Return:** None **Return:** None
pantheon.Teacher.start\_knowledge\_service(feed\_list, schema, program, reader\_config, exe, buf\_size=10, times=1)[source code](https://github.com/PaddlePaddle/PaddleSlim/blob/develop/paddleslim/pantheon/teacher.py#L259) pantheon.Teacher.start\_knowledge\_service(feed\_list, schema, program, reader\_config, exe, buf\_size=10, times=1) [source](https://github.com/PaddlePaddle/PaddleSlim/blob/develop/paddleslim/pantheon/teacher.py#L259)
: Start the knowledge service to generate and transfer knowledge data. In GPU mode, the devices to execute knowledge prediction will be determined by the : Start the knowledge service to generate and transfer knowledge data. In GPU mode, the devices to execute knowledge prediction will be determined by the
environment variable **FLAGS\_selected\_gpus**, or by **CUDA\_VISIBLE\_DEVICES** if it is not set, and by **CPU\_NUM** (default 1) in CPU mode. Only supported in static graph. environment variable **FLAGS\_selected\_gpus**, or by **CUDA\_VISIBLE\_DEVICES** if it is not set, and by **CPU\_NUM** (default 1) in CPU mode. Only supported in static graph.
...@@ -72,18 +72,25 @@ pantheon.Teacher.start\_knowledge\_service(feed\_list, schema, program, reader\_ ...@@ -72,18 +72,25 @@ pantheon.Teacher.start\_knowledge\_service(feed\_list, schema, program, reader\_
- 1) sample generator: - 1) sample generator:
reader\_config={"sample\_generator": #some\_sample\_generator, ```
"batch\_size": #batch\_size, "drop\_last": #drop\_last}, reader_config={"sample_generator": some_sample_generator,
"batch_size": batch_size, "drop_last": drop_last}
# drop_last set to True by default
```
'drop\_last' set to True by default,
- 2) sample list generator: - 2) sample list generator:
reader\_config={"sample\_list\_generator": #some\_sample\_list\_generator}, ```
reader_config={"sample_list_generator": some_sample_list_generator}
```
- 3) batch generator: - 3) batch generator:
reader\_config={"batch\_generator": #some\_batch\_genrator}. ```
reader_config={"batch_generator": some_batch_genrator}
```
The trial to parse config will be in the order of 1) -> 3), and any other unrelated keys in these configs will be ignored. The trial to parse config will be in the order of 1) -> 3), and any other unrelated keys in these configs will be ignored.
- **exe (fluid.Executor):** The executor to run the input program. - **exe (fluid.Executor):** The executor to run the input program.
- **buf\_size (int):** The size of buffers for data reader and knowledge - **buf\_size (int):** The size of buffers for data reader and knowledge
...@@ -97,8 +104,6 @@ pantheon.Teacher.start\_knowledge\_service(feed\_list, schema, program, reader\_ ...@@ -97,8 +104,6 @@ pantheon.Teacher.start\_knowledge\_service(feed\_list, schema, program, reader\_
**Examples:** **Examples:**
Note: this example should be run with the example of class **Student**.
```python ```python
import paddle import paddle
import paddle.fluid as fluid import paddle.fluid as fluid
...@@ -134,10 +139,13 @@ teacher.start_knowledge_service( ...@@ -134,10 +139,13 @@ teacher.start_knowledge_service(
exe=exe) exe=exe)
``` ```
!!! note "Note"
This example should be run with the example of class **Student**.
## Student ## Student
pantheon.Student(merge_strategy=None)[source code](https://github.com/PaddlePaddle/PaddleSlim/blob/develop/paddleslim/pantheon/student.py#L34) pantheon.Student(merge_strategy=None) [source](https://github.com/PaddlePaddle/PaddleSlim/blob/develop/paddleslim/pantheon/student.py#L34)
: The class defined for the student model. Receive knowledge data from : The class defined for the student model. Receive knowledge data from
teacher model and carry out knowledge merging. teacher model and carry out knowledge merging.
...@@ -149,7 +157,7 @@ pantheon.Student(merge_strategy=None)[source code](https://github.com/PaddlePadd ...@@ -149,7 +157,7 @@ pantheon.Student(merge_strategy=None)[source code](https://github.com/PaddlePadd
**Return:** An object of class Student. **Return:** An object of class Student.
pantheon.Student.register\_teacher(in\_path=None, in\_address=None)[source code](https://github.com/PaddlePaddle/PaddleSlim/blob/develop/paddleslim/pantheon/student.py#L72) pantheon.Student.register\_teacher(in\_path=None, in\_address=None) [source](https://github.com/PaddlePaddle/PaddleSlim/blob/develop/paddleslim/pantheon/student.py#L72)
: Register one teacher model and assign the order number to it as its id, with the file path (offline mode) or IP address (online mode) that the teacher model writes knowledge data to. : Register one teacher model and assign the order number to it as its id, with the file path (offline mode) or IP address (online mode) that the teacher model writes knowledge data to.
...@@ -161,7 +169,7 @@ pantheon.Student.register\_teacher(in\_path=None, in\_address=None)[source code] ...@@ -161,7 +169,7 @@ pantheon.Student.register\_teacher(in\_path=None, in\_address=None)[source code]
**Return:** None **Return:** None
pantheon.Student.start()[source code](https://github.com/PaddlePaddle/PaddleSlim/blob/develop/paddleslim/pantheon/student.py#L213) pantheon.Student.start() [source](https://github.com/PaddlePaddle/PaddleSlim/blob/develop/paddleslim/pantheon/student.py#L213)
: End teachers' registration and synchronize with all of them. : End teachers' registration and synchronize with all of them.
...@@ -169,7 +177,7 @@ pantheon.Student.start()[source code](https://github.com/PaddlePaddle/PaddleSlim ...@@ -169,7 +177,7 @@ pantheon.Student.start()[source code](https://github.com/PaddlePaddle/PaddleSlim
**Return:** None **Return:** None
pantheon.Student.send(self, data, teacher_ids=None)[source code](https://github.com/PaddlePaddle/PaddleSlim/blob/develop/paddleslim/pantheon/student.py#L240) pantheon.Student.send(self, data, teacher_ids=None) [source](https://github.com/PaddlePaddle/PaddleSlim/blob/develop/paddleslim/pantheon/student.py#L240)
: Send data to teachers. : Send data to teachers.
...@@ -180,7 +188,7 @@ pantheon.Student.send(self, data, teacher_ids=None)[source code](https://github. ...@@ -180,7 +188,7 @@ pantheon.Student.send(self, data, teacher_ids=None)[source code](https://github.
**Return:** None **Return:** None
pantheon.Student.recv(teacher_id)[source code](https://github.com/PaddlePaddle/PaddleSlim/blob/develop/paddleslim/pantheon/student.py#L262) pantheon.Student.recv(teacher_id) [source](https://github.com/PaddlePaddle/PaddleSlim/blob/develop/paddleslim/pantheon/student.py#L262)
: Receive data from one teacher. : Receive data from one teacher.
...@@ -192,7 +200,7 @@ pantheon.Student.recv(teacher_id)[source code](https://github.com/PaddlePaddle/P ...@@ -192,7 +200,7 @@ pantheon.Student.recv(teacher_id)[source code](https://github.com/PaddlePaddle/P
- The received data object. - The received data object.
pantheon.Student.get\_knowledge\_desc()[source code](https://github.com/PaddlePaddle/PaddleSlim/blob/develop/paddleslim/pantheon/student.py#L283) pantheon.Student.get\_knowledge\_desc() [source](https://github.com/PaddlePaddle/PaddleSlim/blob/develop/paddleslim/pantheon/student.py#L283)
: Get description for knowledge, including shape, data type and lod level for each schema. : Get description for knowledge, including shape, data type and lod level for each schema.
...@@ -203,7 +211,7 @@ pantheon.Student.get\_knowledge\_desc()[source code](https://github.com/PaddlePa ...@@ -203,7 +211,7 @@ pantheon.Student.get\_knowledge\_desc()[source code](https://github.com/PaddlePa
- Knowledge description, which is a dict. - Knowledge description, which is a dict.
pantheon.Student.get\_knowledge\_qsize()[source code](https://github.com/PaddlePaddle/PaddleSlim/blob/develop/paddleslim/pantheon/student.py#L318) pantheon.Student.get\_knowledge\_qsize() [source](https://github.com/PaddlePaddle/PaddleSlim/blob/develop/paddleslim/pantheon/student.py#L318)
: Get the real-time size of knowledge queue. If this size is denoted as : Get the real-time size of knowledge queue. If this size is denoted as
**qsize**, it means that there are **qsize** batch knowledge data **qsize**, it means that there are **qsize** batch knowledge data
...@@ -217,7 +225,7 @@ pantheon.Student.get\_knowledge\_qsize()[source code](https://github.com/PaddleP ...@@ -217,7 +225,7 @@ pantheon.Student.get\_knowledge\_qsize()[source code](https://github.com/PaddleP
- The real-time size of knowledge queue. - The real-time size of knowledge queue.
pantheon.Student.get\_knowledge\_generator(batch\_size, drop\_last=False)[source code](https://github.com/PaddlePaddle/PaddleSlim/blob/develop/paddleslim/pantheon/student.py#L334) pantheon.Student.get\_knowledge\_generator(batch\_size, drop\_last=False) [source](https://github.com/PaddlePaddle/PaddleSlim/blob/develop/paddleslim/pantheon/student.py#L334)
: Get the generator for knowledge data, return None if last generator doesn't finish yet. : Get the generator for knowledge data, return None if last generator doesn't finish yet.
...@@ -254,3 +262,6 @@ for knowledge in data_generator(): ...@@ -254,3 +262,6 @@ for knowledge in data_generator():
# do something else # do something else
``` ```
!!! note "Note"
This example should be run with the example of class **Teacher**.
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册