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

fix id_feature's number_buckets uage with fg,add more info for using #472

Merged
merged 1 commit into from
Jun 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/source/benchmark.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
- 该数据集是淘宝展示广告点击率预估数据集,包含用户、广告特征和行为日志。[天池比赛链接](https://tianchi.aliyun.com/dataset/dataDetail?dataId=56)
- 训练数据表:pai_online_project.easyrec_demo_taobao_train_data
- 测试数据表:pai_online_project.easyrec_demo_taobao_test_data
- 其中pai_online_project是一个公共读的MaxCompute project,里面写入了一些数据表做测试,不需要申请权限。
- 在PAI上面测试使用的资源包括2个parameter server,9个worker,其中一个worker做评估:
```json
{"ps":{"count":2,
Expand Down
6 changes: 3 additions & 3 deletions docs/source/feature/data.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@

EasyRec作为阿里云PAI的推荐算法包,可以无缝对接MaxCompute的数据表,也可以读取OSS中的大文件,还支持E-MapReduce环境中的HDFS文件,也支持local环境中的csv文件。

为了识别这些输入数据中的字段信息,需要设置相应的字段名称和字段类型、设置默认值,帮助EasyRec去读取相应的数据。设置label字段,作为训练的目标。为了适应多目标模型,label字段可以设置多个
为了识别这些输入数据中的字段信息,需要设置相应的字段名称和字段类型、设置默认值,帮助EasyRec去读取相应的数据。设置label字段,作为训练的目标。为了适配多目标模型,label字段可设置多个

另外还有一些参数如prefetch_size,是tensorflow中读取数据需要设置的参数。

## 一个最简单的data config的配置

这个配置里面,只有三个字段,用户ID(uid)、物品ID(item_id)、label字段(click)。

OdpsInputV2表示读取MaxCompute的表作为输入数据。
OdpsInputV2表示读取MaxCompute的表作为输入数据。如果是本地机器上训练,注意使用CSVInput类型。

```protobuf
data_config {
Expand Down Expand Up @@ -160,7 +160,7 @@ def remap_lbl(labels):
### prefetch_size

- data prefetch,以batch为单位,默认是32
- 设置prefetch size可以提高数据加载的速度,防止数据瓶颈
- 设置prefetch size可以提高数据加载的速度,防止数据瓶颈。但是当batchsize较小的时候,该值可适当调小。

### shard && file_shard

Expand Down
11 changes: 6 additions & 5 deletions docs/source/feature/feature.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

在上一节介绍了输入数据包括MaxCompute表、csv文件、hdfs文件、OSS文件等,表或文件的一列对应一个特征。

在数据中可以有一个或者多个label字段,而特征比较丰富,支持的类型包括IdFeature,RawFeature,TagFeature,SequenceFeature, ComboFeature.
在数据中可以有一个或者多个label字段,在多目标模型中,需要多个label字段。而特征比较丰富,支持的类型包括IdFeature,RawFeature,TagFeature,SequenceFeature, ComboFeature

各种特征共用字段
----------------------------------------------------------------
Expand Down Expand Up @@ -71,12 +71,12 @@ IdFeature: 离散值特征/ID类特征

.. math::

embedding\_dim=8+x^{0.25}
- 其中,x 为不同特征取值的个数
embedding\_dim=8+n^{0.25}
- 其中,n 是特征的唯一值的个数(如gender特征的取值是男、女,则n=2)

- hash\_bucket\_size: hash bucket的大小。适用于category_id, user_id等

- 对于user\_id等规模比较大的,hash冲突影响比较小的特征,
- 对于user\_id等规模比较大的,hash冲突影响比较小的特征,用户行为日志不够丰富可通过hash压缩id数量,

.. math::

Expand All @@ -91,7 +91,8 @@ IdFeature: 离散值特征/ID类特征


- num\_buckets: buckets number,
仅仅当输入是integer类型时,可以使用num\_buckets
仅仅当输入是integer类型时,可以使用num\_buckets。
但是当使用fg特征的时候,不要用integer特征用num\_buckets的方式来变换,注意要用hash\_bucket\_size的方式。

- vocab\_list:
指定词表,适合取值比较少可以枚举的特征,如星期,月份,星座等
Expand Down
2 changes: 2 additions & 0 deletions docs/source/feature/pai_rec_callback_conf.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
# PAI-REC 全埋点配置
## PAI-Rec引擎的callback服务文档
- [文档](http://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/pairec/docs/pairec/html/intro/callback_api.html)

## 模板

Expand Down
2 changes: 1 addition & 1 deletion docs/source/feature/rtp_fg.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

- RTP FG: RealTime Predict Feature Generation, 解决实时预测需要的特征工程需求. 特征工程在推荐链路里面也占用了比较长的时间.

- RTP FG能够以比较高的效率生成一些复杂的交叉特征,如match feature和lookup feature, 通过使用同一套c++代码保证离线在线的一致性.
- RTP FG能够以比较高的效率生成一些复杂的交叉特征,如match feature和lookup feature.离线训练和在线预测的时候通过使用同一套c++代码保证离线在线的一致性.

- 其生成的特征可以接入EasyRec进行训练,从RTP FG的配置(fg.json)可以生成EasyRec的配置文件(pipeline.config).

Expand Down
2 changes: 1 addition & 1 deletion docs/source/feature/rtp_native.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# RTP部署

本文档介绍将EasyRec模型部署到RTP上的流程.
本文档介绍将EasyRec模型部署到RTP(Real Time Prediction,实时打分服务)上的流程.

- RTP目前仅支持checkpoint形式的模型部署,因此需要将EasyRec模型导出为checkpoint形式

Expand Down
2 changes: 1 addition & 1 deletion docs/source/intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,5 +62,5 @@ EasyRec implements state of the art machine learning models used in common recom
- Run [`knn algorithm`](vector_retrieve.md) of vectors in distribute environment

### Contact

- DingDing Group: 32260796. (EasyRec usage general discussion.)
- DingDing Group: 37930014162, click [this url](https://qr.dingtalk.com/action/joingroup?code=v1,k1,oHNqtNObbu+xUClHh77gCuKdGGH8AYoQ8AjKU23zTg4=&_dt_no_comment=1&origin=11) or scan QrCode to join![new_group.jpg](../images/qrcode/new_group.jpg)
5 changes: 4 additions & 1 deletion docs/source/predict/MaxCompute 离线预测.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
drop table if exists ctr_test_output;
pai -name easy_rec_ext
-Dcmd=predict
-Dcluster='{"worker" : {"count":5, "cpu":1600, "memory":40000, "gpu":100}}'
-Dcluster='{"worker" : {"count":5, "cpu":1000, "memory":40000, "gpu":0}}'
-Darn=acs:ram::xxx:role/aliyunodpspaidefaultrole
-Dbuckets=oss://easyrec/
-Dsaved_model_dir=oss://easyrec/easy_rec_test/experiment/export/1597299619
Expand All @@ -23,6 +23,7 @@ pai -name easy_rec_ext
-DossHost=oss-cn-beijing-internal.aliyuncs.com;
```

- cluster: 这里cpu:1000表示是10个cpu核;核与内存的关系设置1:4000,一般不超过40000;gpu设置为0,表示不用GPU推理。
- saved_model_dir: 导出的模型目录
- output_table: 输出表,不需要提前创建,会自动创建
- excluded_cols: 预测模型不需要的columns,比如labels
Expand Down Expand Up @@ -55,6 +56,8 @@ pai -name easy_rec_ext
- 多分类模型(num_class > 1),导出字段:
- logits: string(json), softmax之前的vector, shape\[num_class\]
- probs: string(json), softmax之后的vector, shape\[num_class\]
- 如果一个分类目标是is_click, 输出概率的变量名称是probs_is_click
- 多目标模型中有一个回归目标是paytime,那么输出回归预测分的变量名称是:y_paytime
- logits_y: logits\[y\], float, 类别y对应的softmax之前的概率
- probs_y: probs\[y\], float, 类别y对应的概率
- y: 类别id, = argmax(probs_y), int, 概率最大的类别
Expand Down
6 changes: 3 additions & 3 deletions docs/source/predict/processor.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
# EasyRec Processor

EasyRec Processor, 是EasyRec对应的高性能在线打分引擎, 包含特征处理和模型推理功能. EasyRecProcessor运行在PAI-EAS之上, 可以充分利用PAI-EAS多种优化特性.
EasyRec Processor([阿里云上的EasyRec Processor详细文档,包括版本、使用方式](https://help.aliyun.com/zh/pai/user-guide/easyrec)), 是EasyRec对应的高性能在线打分引擎, 包含特征处理和模型推理功能. EasyRecProcessor运行在PAI-EAS之上, 可以充分利用PAI-EAS多种优化特性.

## 架构设计

EasyRec Processor包含三个部分: Item特征缓存, 特征处理(Feature Generator), TFModel(tensorflow model).
EasyRec Processor包含三个部分: Item特征缓存(支持通过[FeatureStore](https://help.aliyun.com/zh/pai/user-guide/featurestore-overview)加载MaxCompute表做初始化), 特征生成(Feature Generator), TFModel(tensorflow model).
![image.png](../../images/processor/easy_rec_processor_1.png)

## 性能优化

### 基础实现

将FeatureGenerator和TFModel分开, 先做特征生成,然后再Run TFModel.
将FeatureGenerator和TFModel分开, 先做特征生成(即fg),然后再Run TFModel得到预测结果.

### 优化实现

Expand Down
2 changes: 1 addition & 1 deletion docs/source/predict/在线预测.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Model Serving

推荐使用阿里云上的[模型在线服务(PAI-EAS)](https://help.aliyun.com/document_detail/113696.html)预置的EasyRecProcessor 来部署在线推理服务。EasyRecProcessor针对推荐模型做了多种优化, 相比tensorflow serving和TensorRT方式部署具有显著的[性能优势](./processor.md)。
推荐使用阿里云上的[模型在线服务(PAI-EAS)](https://help.aliyun.com/document_detail/113696.html)预置的EasyRecProcessor 来部署在线推理服务。EasyRec Processor([阿里云文档](https://help.aliyun.com/zh/pai/user-guide/easyrec))针对推荐模型做了多种优化, 相比tensorflow serving和TensorRT方式部署具有显著的[性能优势](./processor.md)。

## 命令行部署

Expand Down
4 changes: 4 additions & 0 deletions docs/source/quick_start/designer_tutorial.md
Original file line number Diff line number Diff line change
Expand Up @@ -94,3 +94,7 @@ PAI-Designer(Studio 2.0)是基于云原生架构Pipeline Service(PAIFlow
`pai -name easy_rec_ext -project algo_public -Dcmd=predict`

- 具体命令及详细[参数说明](../train.md#on-pai)

### 推荐算法定制的方案

- 在Designer中做推荐算法特征工程、排序模型训练、向量召回等案例的阿里云官网[文档链接](https://help.aliyun.com/zh/pai/use-cases/overview-18)
4 changes: 3 additions & 1 deletion docs/source/quick_start/local_tutorial.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@

我们提供了`本地Anaconda安装`和`Docker镜像启动`两种方式。

有技术问题可加钉钉群:37930014162

#### 本地Anaconda安装

Demo实验中使用的环境为 `python=3.6.8` + `tenserflow=1.12.0`
Expand Down Expand Up @@ -52,7 +54,7 @@ sudo docker exec -it <CONTAINER_ID> bash

输入一般是csv格式的文件。

#### 示例数据
#### 示例数据(点击下载)

- train: [dwd_avazu_ctr_deepmodel_train.csv](http://easyrec.oss-cn-beijing.aliyuncs.com/data/dwd_avazu_ctr_deepmodel_train.csv)
- test: [dwd_avazu_ctr_deepmodel_test.csv](http://easyrec.oss-cn-beijing.aliyuncs.com/data/dwd_avazu_ctr_deepmodel_test.csv)
Expand Down
24 changes: 14 additions & 10 deletions docs/source/quick_start/mc_tutorial.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,18 @@

针对阿里集团内部用户,请参考[mc_tutorial_inner](mc_tutorial_inner.md)。

有技术问题可加钉钉群:37930014162

### 输入数据:

输入一般是odps表:
输入一般是MaxCompute表:

- train: pai_online_project.dwd_avazu_ctr_deepmodel_train
- test: pai_online_project.dwd_avazu_ctr_deepmodel_test
- test: pai_online_project.dwd_avazu_ctr_deepmodel_test

说明:原则上这两张表是自己odps的表,为了方便,以上提供case的两张表可在国内用户的MaxCompute项目空间中访问。

说明:原则上这两张表是自己odps的表,为了方便,以上提供case的两张表在任何地方都可以访问。两个表可以带分区,也可以不带分区。
两个表可以带分区,也可以不带分区。带分区的方式:odps://xyz_project/table1/dt=20240101

### 训练:

Expand All @@ -24,34 +28,34 @@ pai -name easy_rec_ext -project algo_public
-Dconfig=oss://easyrec/config/MultiTower/dwd_avazu_ctr_deepmodel_ext.config
-Dtrain_tables='odps://pai_online_project/tables/dwd_avazu_ctr_deepmodel_train'
-Deval_tables='odps://pai_online_project/tables/dwd_avazu_ctr_deepmodel_test'
-Dcluster='{"ps":{"count":1, "cpu":1000}, "worker" : {"count":3, "cpu":1000, "gpu":100, "memory":40000}}'
-Dcluster='{"ps":{"count":1, "cpu":1000}, "worker" : {"count":3, "cpu":1000, "gpu":0, "memory":40000}}'
-Deval_method=separate
-Dmodel_dir=oss://easyrec/ckpt/MultiTower
-Darn=acs:ram::xxx:role/xxx
-Dbuckets=oss://easyrec/
-DossHost=oss-cn-beijing-internal.aliyuncs.com;
```

- -Dcmd: train 模型训练
- -Dcmd: train 表示模型训练
- -Dconfig: 训练用的配置文件
- -Dtrain_tables: 定义训练表
- -Deval_tables: 定义测试表
- -Deval_tables: 定义评估表
- -Dtables: 定义其他依赖表(可选),如负采样的表
- -Dcluster: 定义PS的数目和worker的数目。具体见:[PAI-TF任务参数介绍](https://help.aliyun.com/document_detail/154186.html?spm=a2c4g.11186623.4.3.e56f1adb7AJ9T5)
- -Deval_method: 评估方法
- separate: 用worker(task_id=1)做评估
- separate: 用worker(task_id=1)做评估。找到MaxCompute训练任务的logview,打开logview之后在worker1机器的stderr日志中查看评估指标数据。
- none: 不需要评估
- master: 在master(task_id=0)上做评估
- -Dfine_tune_checkpoint: 可选,从checkpoint restore参数,进行finetune
- 可以指定directory,将使用directory里面的最新的checkpoint.
- -Dmodel_dir: 如果指定了model_dir将会覆盖config里面的model_dir,一般在周期性调度的时候使用。
- -Darn: rolearn 注意这个的arn要替换成客户自己的。可以从dataworks的设置中查看arn。
- -Darn: rolearn 注意这个的arn要替换成客户自己的。可以从dataworks的设置中查看arn;或者阿里云控制台人工智能平台PAI,左侧菜单"开通和授权",找到全部云产品依赖->Designer->OSS->查看授权信息
- -Dbuckets: config所在的bucket和保存模型的bucket; 如果有多个bucket,逗号分割
- -DossHost: ossHost地址

### 注意:

- dataworks和pai的project 一样,案例都是pai_online_project,用户需要根据自己的环境修改。如果需要使用gpu,PAI的project需要设置开通GPU。链接:[https://pai.data.aliyun.com/console?projectId=&regionId=cn-beijing#/visual](https://pai.data.aliyun.com/console?projectId=%C2%AEionId=cn-beijing#/visual) ,其中regionId可能不一致。
- dataworks和PAI的project一样,案例都是pai_online_project,用户需要根据自己的环境修改。如果需要使用gpu,PAI的project需要设置开通GPU。链接:[https://pai.data.aliyun.com/console?projectId=&regionId=cn-beijing#/visual](https://pai.data.aliyun.com/console?projectId=%C2%AEionId=cn-beijing#/visual) ,其中regionId可能不一致。

![mc_gpu](../../images/quick_start/mc_gpu.png)

Expand All @@ -68,7 +72,7 @@ pai -name easy_rec_ext -project algo_public
-Dcmd=evaluate
-Dconfig=oss://easyrec/config/MultiTower/dwd_avazu_ctr_deepmodel_ext.config
-Deval_tables='odps://pai_online_project/tables/dwd_avazu_ctr_deepmodel_test'
-Dcluster='{"worker" : {"count":1, "cpu":1000, "gpu":100, "memory":40000}}'
-Dcluster='{"worker" : {"count":1, "cpu":1000, "gpu":0, "memory":40000}}'
-Dmodel_dir=oss://easyrec/ckpt/MultiTower
-Darn=acs:ram::xxx:role/xxx
-Dbuckets=oss://easyrec/
Expand Down
2 changes: 1 addition & 1 deletion docs/source/quick_start/mc_tutorial_inner.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ pai -name easy_rec_ext -project algo_public
-Dconfig=oss://easyrec/config/MultiTower/dwd_avazu_ctr_deepmodel_ext.config
-Dtrain_tables='odps://pai_online_project/tables/dwd_avazu_ctr_deepmodel_train'
-Deval_tables='odps://pai_online_project/tables/dwd_avazu_ctr_deepmodel_test'
-Dcluster='{"ps":{"count":1, "cpu":1000}, "worker" : {"count":3, "cpu":1000, "gpu":100, "memory":40000}}'
-Dcluster='{"ps":{"count":1, "cpu":1000}, "worker" : {"count":3, "cpu":1000, "gpu":0, "memory":40000}}'
-Deval_method=separate
-Dmodel_dir=oss://easyrec/ckpt/MultiTower
-Dbuckets=oss://easyrec/?role_arn=acs:ram::xxx:role/xxx&host=oss-cn-beijing-internal.aliyuncs.com;
Expand Down
Loading