text:
使用kuscia执行拆分学习训练算法

场景:我想使用kusica执行一个拆分学习建模任务,查看组件列表https://www.secretflow.org.cn/zh-CN/docs/secretflow/v1.4.0b0/component/comp_list#slnn-train
我选择使用拆分学习组件slnn_train,查看组件参数,发现其中以下几个参数为必填项,["input/train_dataset/feature_selects","input/train_dataset/label","models","optimizer/name","model_input_scheme"],其中models要使用 python 代码定义模型结构,在组件中models参数有默认值如下:
 "s": "# pre imported:\n# import tensorflow as tf\n# from tensorflow import Module, keras\n# from tensorflow.keras import Model, layers\n# from tensorflow.keras.layers import Layer\n# from secretflow.ml.nn import applications as apps\n\ndef create_base_model(input_dim, output_dim):\n    model = keras.Sequential(\n        [\n            keras.Input(shape=input_dim),\n            layers.Dense(100, activation=\"relu\"),\n            layers.Dense(output_dim, activation=\"relu\"),\n        ]\n    )\n    return model\n\ndef create_fuse_model(input_dim):\n    input_layers = [keras.Input(input_dim), keras.Input(input_dim)]\n    merged_layer = layers.concatenate(input_layers)\n    fuse_layer = layers.Dense(64, activation='relu')(merged_layer)\n    output = layers.Dense(1, activation='sigmoid')(fuse_layer)\n    return keras.Model(inputs=input_layers, outputs=output)\n\nhidden_size = 64\n\nfit(\n    client_base=create_base_model(12, hidden_size),\n    server_base=create_base_model(4, hidden_size),\n    server_fuse=create_fuse_model(hidden_size),\n)\n"

对其进行转义
        "s": "# pre imported:\\nimport tensorflow as tf\\nfrom tensorflow import Module, keras\\nfrom tensorflow.keras import Model, layers\\nfrom tensorflow.keras.layers import Layer\\nfrom secretflow.ml.nn import applications as apps\\n\\ndef create_base_model(input_dim, output_dim):\\n    model = keras.Sequential([\\n        keras.Input(shape=input_dim),\\n        layers.Dense(100, activation='relu'),\\n        layers.Dense(output_dim, activation='relu')\\n    ])\\n    return model\\n\\ndef create_fuse_model(input_dim):\\n    input_layers = [keras.Input(input_dim), keras.Input(input_dim)]\\n    merged_layer = layers.concatenate(input_layers)\\n    fuse_layer = layers.Dense(64, activation='relu')(merged_layer)\\n    output = layers.Dense(1, activation='sigmoid')(fuse_layer)\\n    return keras.Model(inputs=input_layers, outputs=output)\\n\\nhidden_size = 64\\n\\nfit(\\n    client_base=create_base_model(12, hidden_size),\\n    server_base=create_base_model(4, hidden_size),\\n    server_fuse=create_fuse_model(hidden_size)\\n)\\n"

根据官方给的文档我自定义了一个yaml文件内容如下,
apiVersion: kuscia.secretflow/v1alpha1
kind: KusciaJob
metadata:
  name: job-best-effort-linear-train
  namespace: cross-domain
spec:
  initiator: alice
  scheduleMode: BestEffort
  maxParallelism: 3
  tasks:
    - taskID: job-psi
      alias: job-psi
      priority: 100
      taskInputConfig: '{"sf_datasource_config":{"alice":{"id":"default-data-source"},"bob":{"id":"default-data-source"}},"sf_cluster_desc":{"parties":["alice","bob"],"devices":[{"name":"spu","type":"spu","parties":["alice","bob"],"config":"{\"runtime_config\":{\"protocol\":\"REF2K\",\"field\":\"FM64\"},\"link_desc\":{\"connect_retry_times\":60,\"connect_retry_interval_ms\":1000,\"brpc_channel_protocol\":\"http\",\"brpc_channel_connection_type\":\"pooled\",\"recv_timeout_ms\":1200000,\"http_timeout_ms\":1200000}}"},{"name":"heu","type":"heu","parties":["alice","bob"],"config":"{\"mode\": \"PHEU\", \"schema\": \"paillier\", \"key_size\": 2048}"}],"ray_fed_config":{"cross_silo_comm_backend":"brpc_link"}},"sf_node_eval_param":{"domain":"data_prep","name":"psi","version":"0.0.1","attr_paths":["input/receiver_input/key","input/sender_input/key","protocol","precheck_input","bucket_size","curve_type"],"attrs":[{"ss":["id1"]},{"ss":["id2"]},{"s":"ECDH_PSI_2PC"},{"b":true},{"i64":"1048576"},{"s":"CURVE_FOURQ"}]},"sf_input_ids":["alice-table","bob-table"],"sf_output_ids":["psi-output"],"sf_output_uris":["psi-output.csv"]}'
      appImage: secretflow-image
      parties:
        - domainID: alice
        - domainID: bob
    - taskID: job-split
      alias: job-split
      priority: 100
      dependencies: ['job-psi']
      taskInputConfig: '{"sf_datasource_config":{"alice":{"id":"default-data-source"},"bob":{"id":"default-data-source"}},"sf_cluster_desc":{"parties":["alice","bob"],"devices":[{"name":"spu","type":"spu","parties":["alice","bob"],"config":"{\"runtime_config\":{\"protocol\":\"REF2K\",\"field\":\"FM64\"},\"link_desc\":{\"connect_retry_times\":60,\"connect_retry_interval_ms\":1000,\"brpc_channel_protocol\":\"http\",\"brpc_channel_connection_type\":\"pooled\",\"recv_timeout_ms\":1200000,\"http_timeout_ms\":1200000}}"},{"name":"heu","type":"heu","parties":["alice","bob"],"config":"{\"mode\": \"PHEU\", \"schema\": \"paillier\", \"key_size\": 2048}"}],"ray_fed_config":{"cross_silo_comm_backend":"brpc_link"}},"sf_node_eval_param":{"domain":"data_prep","name":"train_test_split","version":"0.0.1","attr_paths":["train_size","test_size","random_state","shuffle"],"attrs":[{"f":0.75},{"f":0.25},{"i64":1234},{"b":true}]},"sf_output_uris":["train-dataset.csv","test-dataset.csv"],"sf_output_ids":["train-dataset","test-dataset"],"sf_input_ids":["psi-output"]}'
      appImage: secretflow-image
      parties:
        - domainID: alice
        - domainID: bob
    - taskID: job-sltrain
      alias: job-sltrain
      priority: 100
      dependencies: ['job-split']
      taskInputConfig: '{"sf_datasource_config":{"alice":{"id":"default-data-source"},"bob":{"id":"default-data-source"}},"sf_cluster_desc":{"parties":["alice","bob"],"devices":[{"name":"spu","type":"spu","parties":["alice","bob"],"config":"{\"runtime_config\":{\"protocol\":\"REF2K\",\"field\":\"FM64\"},\"link_desc\":{\"connect_retry_times\":60,\"connect_retry_interval_ms\":1000,\"brpc_channel_protocol\":\"http\",\"brpc_channel_connection_type\":\"pooled\",\"recv_timeout_ms\":1200000,\"http_timeout_ms\":1200000}}"},{"name":"heu","type":"heu","parties":["alice","bob"],"config":"{\"mode\": \"PHEU\", \"schema\": \"paillier\", \"key_size\": 2048}"}],"ray_fed_config":{"cross_silo_comm_backend":"brpc_link"}},"sf_node_eval_param":{"domain":"ml.train","name":"slnn_train","version":"0.0.1","attr_paths":["input/train_dataset/feature_selects","input/train_dataset/label","models","optimizer/name","model_input_scheme"],"attrs":[{"ss":["contact_cellular","contact_telephone","contact_unknown","month_apr","month_aug","month_dec","month_feb","month_jan","month_jul","month_jun","month_mar","month_may","month_nov","month_oct","month_sep","poutcome_failure","poutcome_other","poutcome_success","contact_cellular","contact_telephone","contact_unknown","month_apr,month_aug","month_dec","month_feb","month_jan","month_jul","month_jun","poutcome_failure","poutcome_other","poutcome_success"]},{"ss":["y"]},{ "s": "# pre imported:\\nimport tensorflow as tf\\nfrom tensorflow import Module, keras\\nfrom tensorflow.keras import Model, layers\\nfrom tensorflow.keras.layers import Layer\\nfrom secretflow.ml.nn import applications as apps\\n\\ndef create_base_model(input_dim, output_dim):\\n    model = keras.Sequential([\\n        keras.Input(shape=input_dim),\\n        layers.Dense(100, activation='relu'),\\n        layers.Dense(output_dim, activation='relu')\\n    ])\\n    return model\\n\\ndef create_fuse_model(input_dim):\\n    input_layers = [keras.Input(input_dim), keras.Input(input_dim)]\\n    merged_layer = layers.concatenate(input_layers)\\n    fuse_layer = layers.Dense(64, activation='relu')(merged_layer)\\n    output = layers.Dense(1, activation='sigmoid')(fuse_layer)\\n    return keras.Model(inputs=input_layers, outputs=output)\\n\\nhidden_size = 64\\n\\nfit(\\n    client_base=create_base_model(12, hidden_size),\\n    server_base=create_base_model(4, hidden_size),\\n    server_fuse=create_fuse_model(hidden_size)\\n)\\n"},{"s":"Adam"},{"s":"tensor"}},"sf_input_ids":["train-dataset"],"sf_output_ids":["sl-outputmodel","sl-outputreports"],"sf_output_uris":["sl-outputmodel","sl-outputreports"]}'
      appImage: secretflow-image
      parties:
        - domainID: alice
        - domainID: bob

执行
[root@root-kuscia-master kuscia]# kubectl apply -f job-best-effort-linear-train.yaml
error: error parsing job-best-effort-linear-train.yaml: error converting YAML to JSON: yaml: line 31: did not find expected key

仍然是相同的错误,现在我有以下疑问:
1.错误的原因应该是 taskInputConfig中models参数的问题,models里填写的为python代码,但是我进行格式化后仍然有上述问题,请问是否能提供相应的demo参考一下?
2.models参数必须要以字符串形式填写python代码吗?是否有其他方式,以string字符串填写代码的形式有点过于繁琐,有没有其他更加灵活的方式?
3.组件清单中只看到了拆分学习的训练组件,请问是否有横向联邦学习的训练组件?
希望您能够解答一下,非常感谢

taskInputConfig 需要是一个合法的 string，secretflow 任务配置需要是一个 json string，可以把 job-sltrain 里的 taskInputConfig 拿出来看下，目前不是一个合法的 json。
models参数代码目前是 string 的形式，确实会涉及到换行转义的问题，如果代码放在一个文件中（code.py），然后对代码文件 base64 encode 成一个 string，然后解析的时候base64 decode 一下，这样的方式你是否觉得好一些呢。
目前联邦学习训练组件仅支持纵向联邦学习，横向还不支持

@yushiqie 您好,经过修改我已经完成了拆分学习的训练,但是我现在产生了新的问题,
1.根据组件slnn_train的参数解释发现,训练后的输出有两个,分别为output_model输出模型类型为[‘sf.model.sl_nn’]以及reports输出报告类型为[‘sf.report’],但是在任务完成后并没有找到相关的结果,我的yaml文件内容如下:
apiVersion: kuscia.secretflow/v1alpha1
kind: KusciaJob
metadata:
  name: job-best-effort-linear-train
  namespace: cross-domain
spec:
  initiator: alice
  scheduleMode: BestEffort
  maxParallelism: 3
  tasks:
  - taskID: job-psi
    alias: job-psi
    priority: 100
    taskInputConfig: '{"sf_datasource_config":{"alice":{"id":"default-data-source"},"bob":{"id":"default-data-source"}},"sf_cluster_desc":{"parties":["alice","bob"],"devices":[{"name":"spu","type":"spu","parties":["alice","bob"],"config":"{\"runtime_config\":{\"protocol\":\"REF2K\",\"field\":\"FM64\"},\"link_desc\":{\"connect_retry_times\":60,\"connect_retry_interval_ms\":1000,\"brpc_channel_protocol\":\"http\",\"brpc_channel_connection_type\":\"pooled\",\"recv_timeout_ms\":1200000,\"http_timeout_ms\":1200000}}"},{"name":"heu","type":"heu","parties":["alice","bob"],"config":"{\"mode\":\"PHEU\",\"schema\":\"paillier\",\"key_size\":2048}"}],"ray_fed_config":{"cross_silo_comm_backend":"brpc_link"}},"sf_node_eval_param":{"domain":"data_prep","name":"psi","version":"0.0.1","attr_paths":["input/receiver_input/key","input/sender_input/key","protocol","precheck_input","bucket_size","curve_type"],"attrs":[{"ss":["id1"]},{"ss":["id2"]},{"s":"ECDH_PSI_2PC"},{"b":true},{"i64":"1048576"},{"s":"CURVE_FOURQ"}]},"sf_input_ids":["alice-table","bob-table"],"sf_output_ids":["psi-output"],"sf_output_uris":["psi-output.csv"]}'
    appImage: secretflow-image
    parties:
    - domainID: alice
    - domainID: bob
  - taskID: job-split
    alias: job-split
    priority: 100
    taskInputConfig: '{"sf_datasource_config":{"alice":{"id":"default-data-source"},"bob":{"id":"default-data-source"}},"sf_cluster_desc":{"parties":["alice","bob"],"devices":[{"name":"spu","type":"spu","parties":["alice","bob"],"config":"{\"runtime_config\":{\"protocol\":\"REF2K\",\"field\":\"FM64\"},\"link_desc\":{\"connect_retry_times\":60,\"connect_retry_interval_ms\":1000,\"brpc_channel_protocol\":\"http\",\"brpc_channel_connection_type\":\"pooled\",\"recv_timeout_ms\":1200000,\"http_timeout_ms\":1200000}}"},{"name":"heu","type":"heu","parties":["alice","bob"],"config":"{\"mode\":\"PHEU\",\"schema\":\"paillier\",\"key_size\":2048}"}],"ray_fed_config":{"cross_silo_comm_backend":"brpc_link"}},"sf_node_eval_param":{"domain":"data_prep","name":"train_test_split","version":"0.0.1","attr_paths":["train_size","test_size","random_state","shuffle"],"attrs":[{"f":0.75},{"f":0.25},{"i64":1234},{"b":true}]},"sf_input_ids":["psi-output"],"sf_output_ids":["train-dataset","test-dataset"],"sf_output_uris":["train-dataset.csv","test-dataset.csv"]}'
    appImage: secretflow-image
    parties:
    - domainID: alice
    - domainID: bob
    dependencies:
    - job-psi
  - taskID: job-sltrain
    alias: job-sltrain
    priority: 100
    taskInputConfig: '{"sf_datasource_config":{"alice":{"id":"default-data-source"},"bob":{"id":"default-data-source"}},"sf_cluster_desc":{"parties":["alice","bob"],"devices":[{"name":"spu","type":"spu","parties":["alice","bob"],"config":"{\"runtime_config\":{\"protocol\":\"REF2K\",\"field\":\"FM64\"},\"link_desc\":{\"connect_retry_times\":60,\"connect_retry_interval_ms\":1000,\"brpc_channel_protocol\":\"http\",\"brpc_channel_connection_type\":\"pooled\",\"recv_timeout_ms\":1200000,\"http_timeout_ms\":1200000}}"},{"name":"heu","type":"heu","parties":["alice","bob"],"config":"{\"mode\":\"PHEU\",\"schema\":\"paillier\",\"key_size\":2048}"}],"ray_fed_config":{"cross_silo_comm_backend":"brpc_link"}},"sf_node_eval_param":{"domain":"data_prep","name":"train_test_split","version":"0.0.1","attr_paths":["input/train_dataset/feature_selects","input/train_dataset/label","models","optimizer/name","model_input_scheme"],"attrs":[{"ss":["contact_cellular","contact_telephone","contact_unknown","month_apr,month_aug","month_dec","month_feb","month_jan","month_jul","month_jun","poutcome_failure","poutcome_other","poutcome_success"]},{"ss":["y"]},{"s":"#
      pre imported:\n# import tensorflow as tf\n# from tensorflow import Module, keras\n#
      from tensorflow.keras import Model, layers\n# from tensorflow.keras.layers import
      Layer\n# from secretflow.ml.nn import applications as apps\n\ndef create_base_model(input_dim,
      output_dim):\n    model = keras.Sequential(\n        [\n            keras.Input(shape=input_dim),\n            layers.Dense(100,
      activation=\"relu\"),\n            layers.Dense(output_dim, activation=\"relu\"),\n        ]\n    )\n    return
      model\n\ndef create_fuse_model(input_dim):\n    input_layers = [keras.Input(input_dim),
      keras.Input(input_dim)]\n    merged_layer = layers.concatenate(input_layers)\n    fuse_layer
      = layers.Dense(64, activation=''relu'')(merged_layer)\n    output = layers.Dense(1,
      activation=''sigmoid'')(fuse_layer)\n    return keras.Model(inputs=input_layers,
      outputs=output)\n\nhidden_size = 64\n\nfit(\n    client_base=create_base_model(12,
      hidden_size),\n    server_base=create_base_model(4, hidden_size),\n    server_fuse=create_fuse_model(hidden_size),\n)\n"},{"s":"Adam"},{"s":"tensor"}]},"sf_input_ids":["train-dataset"],"sf_output_ids":["sl-outputmodel","sl-outputreports"],"sf_output_uris":["sl-outputmodel","sl-outputreports"]}'
    appImage: secretflow-image
    parties:
    - domainID: alice
    - domainID: bob
    dependencies:
    - job-split

在alice容器中我找到了sl-outputmodel","sl-outputreports",然而这两个文件都是csv格式的文件,并不是预期的输出

report 不会以文件的方式存储，而仅会以数据元数据方式存在， 可以通过domaindata 接口查询

模型格式不是 keras 或者 saved_model 格式，可以看一下 sl-outputmodel 的具体内容

@ian-huu 查看sl-outputmodel的内容如下:
[root@root-kuscia-lite-alice kuscia]# curl -X POST 'https://127.0.0.1:8082/api/v1/domaindata/query' --header "Token: $(cat /home/kuscia/var/certs/token)" --header 'Content-Type: application/json' -d '{
>   "data": {
>    "domain_id": "alice",
>    "domaindata_id": "sl-outputmodel"
>    }
>  }' --cacert /home/kuscia/var/certs/ca.crt --cert /home/kuscia/var/certs/ca.crt --key /home/kuscia/var/certs/ca.key
{"status":{"code":0, "message":"success", "details":[]}, "data":{"domaindata_id":"sl-outputmodel", "name":"sl-outputmodel", "type":"table", "relative_uri":"sl-outputmodel", "domain_id":"alice", "datasource_id":"default-data-source", "attributes":{"dist_data":"{\n  \"name\": \"sl-outputmodel\",\n  \"type\": \"sf.table.vertical_table\",\n  \"systemInfo\": {\n    \"app\": \"\"\n  },\n  \"meta\": {\n    \"@type\": \"type.googleapis.com/secretflow.spec.v1.VerticalTable\",\n    \"schemas\": [\n      {\n        \"ids\": [\n          \"id1\"\n        ],\n        \"features\": [\n          \"age\",\n          \"education\",\n          \"default\",\n          \"balance\",\n          \"housing\",\n          \"loan\",\n          \"day\",\n          \"duration\",\n          \"campaign\",\n          \"pdays\",\n          \"previous\",\n          \"job_blue-collar\",\n          \"job_entrepreneur\",\n          \"job_housemaid\",\n          \"job_management\",\n          \"job_retired\",\n          \"job_self-employed\",\n          \"job_services\",\n          \"job_student\",\n          \"job_technician\",\n          \"job_unemployed\",\n          \"marital_divorced\",\n          \"marital_married\",\n          \"marital_single\"\n        ],\n        \"idTypes\": [\n          \"str\"\n        ],\n        \"featureTypes\": [\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\"\n        ],\n        \"labels\": [],\n        \"labelTypes\": []\n      },\n      {\n        \"ids\": [\n          \"id2\"\n        ],\n        \"features\": [\n          \"contact_cellular\",\n          \"contact_telephone\",\n          \"contact_unknown\",\n          \"month_apr\",\n          \"month_aug\",\n          \"month_dec\",\n          \"month_feb\",\n          \"month_jan\",\n          \"month_jul\",\n          \"month_jun\",\n          \"month_mar\",\n          \"month_may\",\n          \"month_nov\",\n          \"month_oct\",\n          \"month_sep\",\n          \"poutcome_failure\",\n          \"poutcome_other\",\n          \"poutcome_success\",\n          \"poutcome_unknown\",\n          \"y\"\n        ],\n        \"idTypes\": [\n          \"str\"\n        ],\n        \"featureTypes\": [\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"int\"\n        ],\n        \"labels\": [],\n        \"labelTypes\": []\n      }\n    ],\n    \"lineCount\": \"5564\"\n  },\n  \"dataRefs\": [\n    {\n      \"uri\": \"sl-outputmodel\",\n      \"party\": \"alice\",\n      \"format\": \"csv\"\n    },\n    {\n      \"uri\": \"sl-outputmodel\",\n      \"party\": \"bob\",\n      \"format\": \"csv\"\n    }\n  ]\n}"}, "partition":null, "columns":[{"name":"id1", "type":"str", "comment":"id", "not_nullable":false}, {"name":"age", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"education", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"default", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"balance", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"housing", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"loan", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"day", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"duration", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"campaign", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"pdays", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"previous", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_blue-collar", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_entrepreneur", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_housemaid", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_management", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_retired", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_self-employed", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_services", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_student", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_technician", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_unemployed", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"marital_divorced", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"marital_married", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"marital_single", "type":"float", "comment":"feature", "not_nullable":false}], "vendor":"secretflow", "status":"Available", "author":"alice", "file

而直接进入 alice容器中 /home/kuscia/var/storage/data/sl-outputmodel  使用cat进行查看则是一个csv格式的表格,内容大致如下:
id1,age,education,default,balance,housing,loan,day,duration,campaign,pdays,previous,job_blue-collar,job_entrepreneur,job_housemaid,job_management,job_retired,job_self-employed,job_services,job_student,job_technician,job_unemployed,marital_divorced,marital_married,marital_single
4470,0.4288318845995248,-0.3053083468611561,-0.117184991347747,-0.2934470834152572,1.0358211226635177,-0.3925867711542392,1.603834707067901,2.147532144701344,3.339289085669602,-0.4852053503766987,-0.3619838367558999,-0.4639325546169564,-0.1731690076375218,-0.1580237499348341,1.3543943126559297,-0.2734046609851663,-0.1960131708137989,-0.3006459829345367,-0.1700475343179241,-0.4466166954522901,-0.1840186845246444,-0.3589389310523966,0.8806950470683438,-0.6902303314457872
10452,0.2593245819498875,-0.3053083468611561,-0.117184991347747,-0.283492656187211,-0.9654176557324816,-0.3925867711542392,0.290377274537326,-0.8614847372511674,0.598413650662064,-0.4852053503766987,-0.3619838367558999,-0.4639325546169564,5.774705379690138,-0.1580237499348341,-0.7383374181770063,-0.2734046609851663,-0.1960131708137989,-0.3006459829345367,-0.1700475343179241,-0.4466166954522901,-0.1840186845246444,-0.3589389310523966,0.8806950470683438,-0.6902303314457872
7558,-0.1644436746742058,1.1972340248555386,-0.117184991347747,-0.3685577615905156,-0.9654176557324816,-0.3925867711542392,0.4097824956764692,-0.3104977749961061,0.598413650662064,-0.4852053503766987,-0.3619838367558999,-0.4639325546169564,-0.1731690076375218,-0.1580237499348341,-0.7383374181770063,-0.2734046609851663,-0.1960131708137989,3.3261711672952643,-0.1700475343179241,-0.4466166954522901,-0.1840186845246444,-0.3589389310523966,-1.1354668149080638,1.4487917358041271
6141,0.5135855359243435,-0.3053083468611561,-0.117184991347747,0.5436297516704536,1.0358211226635177,2.547207581803924,-0.7842697157149628,-0.1078030893996845,-0.5762472500554522,-0.4852053503766987,-0.3619838367558999,-0.4639325546169564,-0.1731690076375218,-0.1580237499348341,1.3543943126559297,-0.2734046609851663,-0.1960131708137989,-0.3006459829345367,-0.1700475343179241,-0.4466166954522901,-0.1840186845246444,-0.3589389310523966,0.8806950470683438,-0.6902303314457872
4661,-1.1814874905720298,-0.3053083468611561,-0.117184991347747,-0.4180282484208062,-0.9654176557324816,-0.3925867711542392,0.1709720533981828,0.2233600588986942,-0.1846936164829468,-0.4852053503766987,-0.3619838367558999,-0.4639325546169564,-0.1731690076375218,-0.1580237499348341,-0.7383374181770063,-0.2734046609851663,-0.1960131708137989,3.3261711672952643,-0.1700475343179241,-0.4466166954522901,-0.1840186845246444,-0.3589389310523966,-1.1354668149080638,1.4487917358041271
5

感觉不太符合

@ian-huu 查看sl-outputmodel的内容如下:
[root@root-kuscia-lite-alice kuscia]# curl -X POST 'https://127.0.0.1:8082/api/v1/domaindata/query' --header "Token: $(cat /home/kuscia/var/certs/token)" --header 'Content-Type: application/json' -d '{
>   "data": {
>    "domain_id": "alice",
>    "domaindata_id": "sl-outputmodel"
>    }
>  }' --cacert /home/kuscia/var/certs/ca.crt --cert /home/kuscia/var/certs/ca.crt --key /home/kuscia/var/certs/ca.key
{"status":{"code":0, "message":"success", "details":[]}, "data":{"domaindata_id":"sl-outputmodel", "name":"sl-outputmodel", "type":"table", "relative_uri":"sl-outputmodel", "domain_id":"alice", "datasource_id":"default-data-source", "attributes":{"dist_data":"{\n  \"name\": \"sl-outputmodel\",\n  \"type\": \"sf.table.vertical_table\",\n  \"systemInfo\": {\n    \"app\": \"\"\n  },\n  \"meta\": {\n    \"@type\": \"type.googleapis.com/secretflow.spec.v1.VerticalTable\",\n    \"schemas\": [\n      {\n        \"ids\": [\n          \"id1\"\n        ],\n        \"features\": [\n          \"age\",\n          \"education\",\n          \"default\",\n          \"balance\",\n          \"housing\",\n          \"loan\",\n          \"day\",\n          \"duration\",\n          \"campaign\",\n          \"pdays\",\n          \"previous\",\n          \"job_blue-collar\",\n          \"job_entrepreneur\",\n          \"job_housemaid\",\n          \"job_management\",\n          \"job_retired\",\n          \"job_self-employed\",\n          \"job_services\",\n          \"job_student\",\n          \"job_technician\",\n          \"job_unemployed\",\n          \"marital_divorced\",\n          \"marital_married\",\n          \"marital_single\"\n        ],\n        \"idTypes\": [\n          \"str\"\n        ],\n        \"featureTypes\": [\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\"\n        ],\n        \"labels\": [],\n        \"labelTypes\": []\n      },\n      {\n        \"ids\": [\n          \"id2\"\n        ],\n        \"features\": [\n          \"contact_cellular\",\n          \"contact_telephone\",\n          \"contact_unknown\",\n          \"month_apr\",\n          \"month_aug\",\n          \"month_dec\",\n          \"month_feb\",\n          \"month_jan\",\n          \"month_jul\",\n          \"month_jun\",\n          \"month_mar\",\n          \"month_may\",\n          \"month_nov\",\n          \"month_oct\",\n          \"month_sep\",\n          \"poutcome_failure\",\n          \"poutcome_other\",\n          \"poutcome_success\",\n          \"poutcome_unknown\",\n          \"y\"\n        ],\n        \"idTypes\": [\n          \"str\"\n        ],\n        \"featureTypes\": [\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"int\"\n        ],\n        \"labels\": [],\n        \"labelTypes\": []\n      }\n    ],\n    \"lineCount\": \"5564\"\n  },\n  \"dataRefs\": [\n    {\n      \"uri\": \"sl-outputmodel\",\n      \"party\": \"alice\",\n      \"format\": \"csv\"\n    },\n    {\n      \"uri\": \"sl-outputmodel\",\n      \"party\": \"bob\",\n      \"format\": \"csv\"\n    }\n  ]\n}"}, "partition":null, "columns":[{"name":"id1", "type":"str", "comment":"id", "not_nullable":false}, {"name":"age", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"education", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"default", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"balance", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"housing", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"loan", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"day", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"duration", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"campaign", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"pdays", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"previous", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_blue-collar", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_entrepreneur", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_housemaid", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_management", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_retired", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_self-employed", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_services", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_student", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_technician", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_unemployed", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"marital_divorced", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"marital_married", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"marital_single", "type":"float", "comment":"feature", "not_nullable":false}], "vendor":"secretflow", "status":"Available", "author":"alice", "file

而直接进入 alice容器中 /home/kuscia/var/storage/data/sl-outputmodel 使用cat进行查看则是一个csv格式的表格,内容大致如下:
id1,age,education,default,balance,housing,loan,day,duration,campaign,pdays,previous,job_blue-collar,job_entrepreneur,job_housemaid,job_management,job_retired,job_self-employed,job_services,job_student,job_technician,job_unemployed,marital_divorced,marital_married,marital_single
4470,0.4288318845995248,-0.3053083468611561,-0.117184991347747,-0.2934470834152572,1.0358211226635177,-0.3925867711542392,1.603834707067901,2.147532144701344,3.339289085669602,-0.4852053503766987,-0.3619838367558999,-0.4639325546169564,-0.1731690076375218,-0.1580237499348341,1.3543943126559297,-0.2734046609851663,-0.1960131708137989,-0.3006459829345367,-0.1700475343179241,-0.4466166954522901,-0.1840186845246444,-0.3589389310523966,0.8806950470683438,-0.6902303314457872
10452,0.2593245819498875,-0.3053083468611561,-0.117184991347747,-0.283492656187211,-0.9654176557324816,-0.3925867711542392,0.290377274537326,-0.8614847372511674,0.598413650662064,-0.4852053503766987,-0.3619838367558999,-0.4639325546169564,5.774705379690138,-0.1580237499348341,-0.7383374181770063,-0.2734046609851663,-0.1960131708137989,-0.3006459829345367,-0.1700475343179241,-0.4466166954522901,-0.1840186845246444,-0.3589389310523966,0.8806950470683438,-0.6902303314457872
7558,-0.1644436746742058,1.1972340248555386,-0.117184991347747,-0.3685577615905156,-0.9654176557324816,-0.3925867711542392,0.4097824956764692,-0.3104977749961061,0.598413650662064,-0.4852053503766987,-0.3619838367558999,-0.4639325546169564,-0.1731690076375218,-0.1580237499348341,-0.7383374181770063,-0.2734046609851663,-0.1960131708137989,3.3261711672952643,-0.1700475343179241,-0.4466166954522901,-0.1840186845246444,-0.3589389310523966,-1.1354668149080638,1.4487917358041271
6141,0.5135855359243435,-0.3053083468611561,-0.117184991347747,0.5436297516704536,1.0358211226635177,2.547207581803924,-0.7842697157149628,-0.1078030893996845,-0.5762472500554522,-0.4852053503766987,-0.3619838367558999,-0.4639325546169564,-0.1731690076375218,-0.1580237499348341,1.3543943126559297,-0.2734046609851663,-0.1960131708137989,-0.3006459829345367,-0.1700475343179241,-0.4466166954522901,-0.1840186845246444,-0.3589389310523966,0.8806950470683438,-0.6902303314457872
4661,-1.1814874905720298,-0.3053083468611561,-0.117184991347747,-0.4180282484208062,-0.9654176557324816,-0.3925867711542392,0.1709720533981828,0.2233600588986942,-0.1846936164829468,-0.4852053503766987,-0.3619838367558999,-0.4639325546169564,-0.1731690076375218,-0.1580237499348341,-0.7383374181770063,-0.2734046609851663,-0.1960131708137989,3.3261711672952643,-0.1700475343179241,-0.4466166954522901,-0.1840186845246444,-0.3589389310523966,-1.1354668149080638,1.4487917358041271
5

感觉不太符合

实际产出的模型文件和报告内容呢

@yushiqie 我现在的疑问就是怎么查看实际产出的模型文件和报告内容

@ian-huu 查看sl-outputmodel的内容如下:
[root@root-kuscia-lite-alice kuscia]# curl -X POST 'https://127.0.0.1:8082/api/v1/domaindata/query' --header "Token: $(cat /home/kuscia/var/certs/token)" --header 'Content-Type: application/json' -d '{
>   "data": {
>    "domain_id": "alice",
>    "domaindata_id": "sl-outputmodel"
>    }
>  }' --cacert /home/kuscia/var/certs/ca.crt --cert /home/kuscia/var/certs/ca.crt --key /home/kuscia/var/certs/ca.key
{"status":{"code":0, "message":"success", "details":[]}, "data":{"domaindata_id":"sl-outputmodel", "name":"sl-outputmodel", "type":"table", "relative_uri":"sl-outputmodel", "domain_id":"alice", "datasource_id":"default-data-source", "attributes":{"dist_data":"{\n  \"name\": \"sl-outputmodel\",\n  \"type\": \"sf.table.vertical_table\",\n  \"systemInfo\": {\n    \"app\": \"\"\n  },\n  \"meta\": {\n    \"@type\": \"type.googleapis.com/secretflow.spec.v1.VerticalTable\",\n    \"schemas\": [\n      {\n        \"ids\": [\n          \"id1\"\n        ],\n        \"features\": [\n          \"age\",\n          \"education\",\n          \"default\",\n          \"balance\",\n          \"housing\",\n          \"loan\",\n          \"day\",\n          \"duration\",\n          \"campaign\",\n          \"pdays\",\n          \"previous\",\n          \"job_blue-collar\",\n          \"job_entrepreneur\",\n          \"job_housemaid\",\n          \"job_management\",\n          \"job_retired\",\n          \"job_self-employed\",\n          \"job_services\",\n          \"job_student\",\n          \"job_technician\",\n          \"job_unemployed\",\n          \"marital_divorced\",\n          \"marital_married\",\n          \"marital_single\"\n        ],\n        \"idTypes\": [\n          \"str\"\n        ],\n        \"featureTypes\": [\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\"\n        ],\n        \"labels\": [],\n        \"labelTypes\": []\n      },\n      {\n        \"ids\": [\n          \"id2\"\n        ],\n        \"features\": [\n          \"contact_cellular\",\n          \"contact_telephone\",\n          \"contact_unknown\",\n          \"month_apr\",\n          \"month_aug\",\n          \"month_dec\",\n          \"month_feb\",\n          \"month_jan\",\n          \"month_jul\",\n          \"month_jun\",\n          \"month_mar\",\n          \"month_may\",\n          \"month_nov\",\n          \"month_oct\",\n          \"month_sep\",\n          \"poutcome_failure\",\n          \"poutcome_other\",\n          \"poutcome_success\",\n          \"poutcome_unknown\",\n          \"y\"\n        ],\n        \"idTypes\": [\n          \"str\"\n        ],\n        \"featureTypes\": [\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"int\"\n        ],\n        \"labels\": [],\n        \"labelTypes\": []\n      }\n    ],\n    \"lineCount\": \"5564\"\n  },\n  \"dataRefs\": [\n    {\n      \"uri\": \"sl-outputmodel\",\n      \"party\": \"alice\",\n      \"format\": \"csv\"\n    },\n    {\n      \"uri\": \"sl-outputmodel\",\n      \"party\": \"bob\",\n      \"format\": \"csv\"\n    }\n  ]\n}"}, "partition":null, "columns":[{"name":"id1", "type":"str", "comment":"id", "not_nullable":false}, {"name":"age", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"education", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"default", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"balance", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"housing", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"loan", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"day", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"duration", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"campaign", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"pdays", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"previous", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_blue-collar", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_entrepreneur", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_housemaid", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_management", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_retired", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_self-employed", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_services", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_student", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_technician", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_unemployed", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"marital_divorced", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"marital_married", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"marital_single", "type":"float", "comment":"feature", "not_nullable":false}], "vendor":"secretflow", "status":"Available", "author":"alice", "file

而直接进入 alice容器中 /home/kuscia/var/storage/data/sl-outputmodel 使用cat进行查看则是一个csv格式的表格,内容大致如下:
id1,age,education,default,balance,housing,loan,day,duration,campaign,pdays,previous,job_blue-collar,job_entrepreneur,job_housemaid,job_management,job_retired,job_self-employed,job_services,job_student,job_technician,job_unemployed,marital_divorced,marital_married,marital_single
4470,0.4288318845995248,-0.3053083468611561,-0.117184991347747,-0.2934470834152572,1.0358211226635177,-0.3925867711542392,1.603834707067901,2.147532144701344,3.339289085669602,-0.4852053503766987,-0.3619838367558999,-0.4639325546169564,-0.1731690076375218,-0.1580237499348341,1.3543943126559297,-0.2734046609851663,-0.1960131708137989,-0.3006459829345367,-0.1700475343179241,-0.4466166954522901,-0.1840186845246444,-0.3589389310523966,0.8806950470683438,-0.6902303314457872
10452,0.2593245819498875,-0.3053083468611561,-0.117184991347747,-0.283492656187211,-0.9654176557324816,-0.3925867711542392,0.290377274537326,-0.8614847372511674,0.598413650662064,-0.4852053503766987,-0.3619838367558999,-0.4639325546169564,5.774705379690138,-0.1580237499348341,-0.7383374181770063,-0.2734046609851663,-0.1960131708137989,-0.3006459829345367,-0.1700475343179241,-0.4466166954522901,-0.1840186845246444,-0.3589389310523966,0.8806950470683438,-0.6902303314457872
7558,-0.1644436746742058,1.1972340248555386,-0.117184991347747,-0.3685577615905156,-0.9654176557324816,-0.3925867711542392,0.4097824956764692,-0.3104977749961061,0.598413650662064,-0.4852053503766987,-0.3619838367558999,-0.4639325546169564,-0.1731690076375218,-0.1580237499348341,-0.7383374181770063,-0.2734046609851663,-0.1960131708137989,3.3261711672952643,-0.1700475343179241,-0.4466166954522901,-0.1840186845246444,-0.3589389310523966,-1.1354668149080638,1.4487917358041271
6141,0.5135855359243435,-0.3053083468611561,-0.117184991347747,0.5436297516704536,1.0358211226635177,2.547207581803924,-0.7842697157149628,-0.1078030893996845,-0.5762472500554522,-0.4852053503766987,-0.3619838367558999,-0.4639325546169564,-0.1731690076375218,-0.1580237499348341,1.3543943126559297,-0.2734046609851663,-0.1960131708137989,-0.3006459829345367,-0.1700475343179241,-0.4466166954522901,-0.1840186845246444,-0.3589389310523966,0.8806950470683438,-0.6902303314457872
4661,-1.1814874905720298,-0.3053083468611561,-0.117184991347747,-0.4180282484208062,-0.9654176557324816,-0.3925867711542392,0.1709720533981828,0.2233600588986942,-0.1846936164829468,-0.4852053503766987,-0.3619838367558999,-0.4639325546169564,-0.1731690076375218,-0.1580237499348341,-0.7383374181770063,-0.2734046609851663,-0.1960131708137989,3.3261711672952643,-0.1700475343179241,-0.4466166954522901,-0.1840186845246444,-0.3589389310523966,-1.1354668149080638,1.4487917358041271
5

感觉不太符合

再检查一下训练组件配置，目前还是定义了一个随机分割组件

@ian-huu 查看sl-outputmodel的内容如下:
[root@root-kuscia-lite-alice kuscia]# curl -X POST 'https://127.0.0.1:8082/api/v1/domaindata/query' --header "Token: $(cat /home/kuscia/var/certs/token)" --header 'Content-Type: application/json' -d '{
>   "data": {
>    "domain_id": "alice",
>    "domaindata_id": "sl-outputmodel"
>    }
>  }' --cacert /home/kuscia/var/certs/ca.crt --cert /home/kuscia/var/certs/ca.crt --key /home/kuscia/var/certs/ca.key
{"status":{"code":0, "message":"success", "details":[]}, "data":{"domaindata_id":"sl-outputmodel", "name":"sl-outputmodel", "type":"table", "relative_uri":"sl-outputmodel", "domain_id":"alice", "datasource_id":"default-data-source", "attributes":{"dist_data":"{\n  \"name\": \"sl-outputmodel\",\n  \"type\": \"sf.table.vertical_table\",\n  \"systemInfo\": {\n    \"app\": \"\"\n  },\n  \"meta\": {\n    \"@type\": \"type.googleapis.com/secretflow.spec.v1.VerticalTable\",\n    \"schemas\": [\n      {\n        \"ids\": [\n          \"id1\"\n        ],\n        \"features\": [\n          \"age\",\n          \"education\",\n          \"default\",\n          \"balance\",\n          \"housing\",\n          \"loan\",\n          \"day\",\n          \"duration\",\n          \"campaign\",\n          \"pdays\",\n          \"previous\",\n          \"job_blue-collar\",\n          \"job_entrepreneur\",\n          \"job_housemaid\",\n          \"job_management\",\n          \"job_retired\",\n          \"job_self-employed\",\n          \"job_services\",\n          \"job_student\",\n          \"job_technician\",\n          \"job_unemployed\",\n          \"marital_divorced\",\n          \"marital_married\",\n          \"marital_single\"\n        ],\n        \"idTypes\": [\n          \"str\"\n        ],\n        \"featureTypes\": [\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\"\n        ],\n        \"labels\": [],\n        \"labelTypes\": []\n      },\n      {\n        \"ids\": [\n          \"id2\"\n        ],\n        \"features\": [\n          \"contact_cellular\",\n          \"contact_telephone\",\n          \"contact_unknown\",\n          \"month_apr\",\n          \"month_aug\",\n          \"month_dec\",\n          \"month_feb\",\n          \"month_jan\",\n          \"month_jul\",\n          \"month_jun\",\n          \"month_mar\",\n          \"month_may\",\n          \"month_nov\",\n          \"month_oct\",\n          \"month_sep\",\n          \"poutcome_failure\",\n          \"poutcome_other\",\n          \"poutcome_success\",\n          \"poutcome_unknown\",\n          \"y\"\n        ],\n        \"idTypes\": [\n          \"str\"\n        ],\n        \"featureTypes\": [\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"int\"\n        ],\n        \"labels\": [],\n        \"labelTypes\": []\n      }\n    ],\n    \"lineCount\": \"5564\"\n  },\n  \"dataRefs\": [\n    {\n      \"uri\": \"sl-outputmodel\",\n      \"party\": \"alice\",\n      \"format\": \"csv\"\n    },\n    {\n      \"uri\": \"sl-outputmodel\",\n      \"party\": \"bob\",\n      \"format\": \"csv\"\n    }\n  ]\n}"}, "partition":null, "columns":[{"name":"id1", "type":"str", "comment":"id", "not_nullable":false}, {"name":"age", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"education", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"default", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"balance", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"housing", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"loan", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"day", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"duration", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"campaign", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"pdays", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"previous", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_blue-collar", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_entrepreneur", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_housemaid", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_management", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_retired", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_self-employed", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_services", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_student", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_technician", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_unemployed", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"marital_divorced", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"marital_married", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"marital_single", "type":"float", "comment":"feature", "not_nullable":false}], "vendor":"secretflow", "status":"Available", "author":"alice", "file

而直接进入 alice容器中 /home/kuscia/var/storage/data/sl-outputmodel 使用cat进行查看则是一个csv格式的表格,内容大致如下:
id1,age,education,default,balance,housing,loan,day,duration,campaign,pdays,previous,job_blue-collar,job_entrepreneur,job_housemaid,job_management,job_retired,job_self-employed,job_services,job_student,job_technician,job_unemployed,marital_divorced,marital_married,marital_single
4470,0.4288318845995248,-0.3053083468611561,-0.117184991347747,-0.2934470834152572,1.0358211226635177,-0.3925867711542392,1.603834707067901,2.147532144701344,3.339289085669602,-0.4852053503766987,-0.3619838367558999,-0.4639325546169564,-0.1731690076375218,-0.1580237499348341,1.3543943126559297,-0.2734046609851663,-0.1960131708137989,-0.3006459829345367,-0.1700475343179241,-0.4466166954522901,-0.1840186845246444,-0.3589389310523966,0.8806950470683438,-0.6902303314457872
10452,0.2593245819498875,-0.3053083468611561,-0.117184991347747,-0.283492656187211,-0.9654176557324816,-0.3925867711542392,0.290377274537326,-0.8614847372511674,0.598413650662064,-0.4852053503766987,-0.3619838367558999,-0.4639325546169564,5.774705379690138,-0.1580237499348341,-0.7383374181770063,-0.2734046609851663,-0.1960131708137989,-0.3006459829345367,-0.1700475343179241,-0.4466166954522901,-0.1840186845246444,-0.3589389310523966,0.8806950470683438,-0.6902303314457872
7558,-0.1644436746742058,1.1972340248555386,-0.117184991347747,-0.3685577615905156,-0.9654176557324816,-0.3925867711542392,0.4097824956764692,-0.3104977749961061,0.598413650662064,-0.4852053503766987,-0.3619838367558999,-0.4639325546169564,-0.1731690076375218,-0.1580237499348341,-0.7383374181770063,-0.2734046609851663,-0.1960131708137989,3.3261711672952643,-0.1700475343179241,-0.4466166954522901,-0.1840186845246444,-0.3589389310523966,-1.1354668149080638,1.4487917358041271
6141,0.5135855359243435,-0.3053083468611561,-0.117184991347747,0.5436297516704536,1.0358211226635177,2.547207581803924,-0.7842697157149628,-0.1078030893996845,-0.5762472500554522,-0.4852053503766987,-0.3619838367558999,-0.4639325546169564,-0.1731690076375218,-0.1580237499348341,1.3543943126559297,-0.2734046609851663,-0.1960131708137989,-0.3006459829345367,-0.1700475343179241,-0.4466166954522901,-0.1840186845246444,-0.3589389310523966,0.8806950470683438,-0.6902303314457872
4661,-1.1814874905720298,-0.3053083468611561,-0.117184991347747,-0.4180282484208062,-0.9654176557324816,-0.3925867711542392,0.1709720533981828,0.2233600588986942,-0.1846936164829468,-0.4852053503766987,-0.3619838367558999,-0.4639325546169564,-0.1731690076375218,-0.1580237499348341,-0.7383374181770063,-0.2734046609851663,-0.1960131708137989,3.3261711672952643,-0.1700475343179241,-0.4466166954522901,-0.1840186845246444,-0.3589389310523966,-1.1354668149080638,1.4487917358041271
5

感觉不太符合

再检查一下训练组件配置，目前还是定义了一个随机分割组件

@yushiqie 确实是这个的问题，同时发现需要将 ENABLE_NN 环境变量设置成 true，请问一下在使用kuscia的实话需要在哪里设置这个环境变量？

我通过重新打包了一份镜像,将环境变量设置成 true,并在部署脚本中的镜像名称进行替换.但是在执行拆分学习训练的时候还是产生了一些错误,查看的pod日志如下:
Train Processing: :  57%|█████▋    | 8/14 [00:00<00:00, 76.47it/s]2024-05-13 11:35:23,650	ERROR worker.py:405 -- Unhandled error (suppress with 'RAY_IGNORE_UNHANDLED_ERRORS=1'): ray::PYUPipelineTFModel.base_forward() (pid=752, ip=job-sltrain-0-global.bob.svc, actor_id=ef9dc6717669ec8333b8a3d801000000, repr=<secretflow.ml.nn.sl.backend.tensorflow.strategy.pipeline.PYUPipelineTFModel object at 0x7f254e65e8c0>)
2024-05-13T19:35:23.651174919+08:00 stderr F   File "/usr/local/lib/python3.10/site-packages/secretflow/device/proxy.py", line 76, in wrapper
2024-05-13T19:35:23.651179697+08:00 stderr F     return method(*args, **kwargs)
2024-05-13T19:35:23.651184412+08:00 stderr F   File "/usr/local/lib/python3.10/site-packages/secretflow/ml/nn/sl/backend/tensorflow/strategy/pipeline.py", line 91, in base_forward
2024-05-13T19:35:23.651187868+08:00 stderr F     self._h = self._base_forward_internal(
2024-05-13T19:35:23.651191183+08:00 stderr F   File "/usr/local/lib/python3.10/site-packages/secretflow/device/proxy.py", line 76, in wrapper
2024-05-13T19:35:23.651200238+08:00 stderr F     return method(*args, **kwargs)
2024-05-13T19:35:23.651203514+08:00 stderr F   File "/usr/local/lib/python3.10/site-packages/secretflow/ml/nn/sl/backend/tensorflow/sl_base.py", line 653, in _base_forward_internal
2024-05-13T19:35:23.651207545+08:00 stderr F     h = self.model_base(data_x, training=training)
2024-05-13T19:35:23.651212508+08:00 stderr F   File "/usr/local/lib/python3.10/site-packages/keras/utils/traceback_utils.py", line 70, in error_handler
2024-05-13T19:35:23.651215889+08:00 stderr F     raise e.with_traceback(filtered_tb) from None
2024-05-13T19:35:23.651219998+08:00 stderr F   File "/usr/local/lib/python3.10/site-packages/secretflow/component/ml/nn/sl/training/tensorflow/model.py", line 46, in call
2024-05-13T19:35:23.651224854+08:00 stderr F     return self.loaded(x, training=True)
2024-05-13T19:35:23.651228166+08:00 stderr F ValueError: Exception encountered when calling layer 'wrapper_model' (type WrapperModel).
2024-05-13T19:35:23.651231142+08:00 stderr F
2024-05-13T19:35:23.651234578+08:00 stderr F Could not find matching concrete function to call loaded from the SavedModel. Got:
2024-05-13T19:35:23.651237762+08:00 stderr F   Positional arguments (3 total):
2024-05-13T19:35:23.651250303+08:00 stderr F     * <tf.Tensor 'inputs:0' shape=(512, 13) dtype=float32>
2024-05-13T19:35:23.651254056+08:00 stderr F     * True
2024-05-13T19:35:23.651257597+08:00 stderr F     * None
2024-05-13T19:35:23.651261884+08:00 stderr F   Keyword arguments: {}
2024-05-13T19:35:23.651264756+08:00 stderr F
2024-05-13T19:35:23.651277383+08:00 stderr F  Expected these arguments to match one of the following 4 option(s):
2024-05-13T19:35:23.651280403+08:00 stderr F
2024-05-13T19:35:23.651283736+08:00 stderr F Option 1:
2024-05-13T19:35:23.65128689+08:00 stderr F   Positional arguments (3 total):
2024-05-13T19:35:23.651290009+08:00 stderr F     * TensorSpec(shape=(None, 4), dtype=tf.float32, name='input_2')
2024-05-13T19:35:23.651293203+08:00 stderr F     * True
2024-05-13T19:35:23.651296341+08:00 stderr F     * None
2024-05-13T19:35:23.651299351+08:00 stderr F   Keyword arguments: {}
2024-05-13T19:35:23.65130211+08:00 stderr F
2024-05-13T19:35:23.651305097+08:00 stderr F Option 2:
2024-05-13T19:35:23.651308303+08:00 stderr F   Positional arguments (3 total):
2024-05-13T19:35:23.651311419+08:00 stderr F     * TensorSpec(shape=(None, 4), dtype=tf.float32, name='input_2')
2024-05-13T19:35:23.651314535+08:00 stderr F     * False
2024-05-13T19:35:23.651317724+08:00 stderr F     * None
2024-05-13T19:35:23.651321402+08:00 stderr F   Keyword arguments: {}
2024-05-13T19:35:23.651324207+08:00 stderr F
2024-05-13T19:35:23.651327597+08:00 stderr F Option 3:
2024-05-13T19:35:23.651330666+08:00 stderr F   Positional arguments (3 total):
2024-05-13T19:35:23.651333737+08:00 stderr F     * TensorSpec(shape=(None, 4), dtype=tf.float32, name='inputs')
2024-05-13T19:35:23.651336853+08:00 stderr F     * True
2024-05-13T19:35:23.651339783+08:00 stderr F     * None
2024-05-13T19:35:23.651342834+08:00 stderr F   Keyword arguments: {}
2024-05-13T19:35:23.651345698+08:00 stderr F
2024-05-13T19:35:23.651348722+08:00 stderr F Option 4:
2024-05-13T19:35:23.651351771+08:00 stderr F   Positional arguments (3 total):
2024-05-13T19:35:23.651354838+08:00 stderr F     * TensorSpec(shape=(None, 4), dtype=tf.float32, name='inputs')
2024-05-13T19:35:23.651357863+08:00 stderr F     * False
2024-05-13T19:35:23.651360826+08:00 stderr F     * None
2024-05-13T19:35:23.651363947+08:00 stderr F   Keyword arguments: {}
2024-05-13T19:35:23.651366871+08:00 stderr F
2024-05-13T19:35:23.651370357+08:00 stderr F Call arguments received by layer 'wrapper_model' (type WrapperModel):
2024-05-13T19:35:23.651373449+08:00 stderr F   • x=tf.Tensor(shape=(512, 13), dtype=float32)
2024-05-13T19:35:23.660146758+08:00 stderr F 2024-05-13 11:35:23,659	ERROR worker.py:405 -- Unhandled error (suppress with 'RAY_IGNORE_UNHANDLED_ERRORS=1'): ray::PYUPipelineTFModel.base_forward() (pid=752, ip=job-sltrain-0-global.bob.svc, actor_id=ef9dc6717669ec8333b8a3d801000000, repr=<secretflow.ml.nn.sl.backend.tensorflow.strategy.pipeline.PYUPipelineTFModel object at 0x7f254e65e8c0>)
2024-05-13T19:35:23.660168097+08:00 stderr F   File "/usr/local/lib/python3.10/site-packages/secretflow/device/proxy.py", line 76, in wrapper
2024-05-13T19:35:23.660173179+08:00 stderr F     return method(*args, **kwargs)
2024-05-13T19:35:23.660177273+08:00 stderr F   File "/usr/local/lib/python3.10/site-packages/secretflow/ml/nn/sl/backend/tensorflow/strategy/pipeline.py", line 91, in base_forward
2024-05-13T19:35:23.66018097+08:00 stderr F     self._h = self._base_forward_internal(
2024-05-13T19:35:23.660184296+08:00 stderr F   File "/usr/local/lib/python3.10/site-packages/secretflow/device/proxy.py", line 76, in wrapper
2024-05-13T19:35:23.660188149+08:00 stderr F     return method(*args, **kwargs)
2024-05-13T19:35:23.660191645+08:00 stderr F   File "/usr/local/lib/python3.10/site-packages/secretflow/ml/nn/sl/backend/tensorflow/sl_base.py", line 653, in _base_forward_internal
2024-05-13T19:35:23.660195989+08:00 stderr F     h = self.model_base(data_x, training=training)
2024-05-13T19:35:23.660200694+08:00 stderr F   File "/usr/local/lib/python3.10/site-packages/keras/utils/traceback_utils.py", line 70, in error_handler
2024-05-13T19:35:23.660215232+08:00 stderr F     raise e.with_traceback(filtered_tb) from None
2024-05-13T19:35:23.660219805+08:00 stderr F   File "/usr/local/lib/python3.10/site-packages/secretflow/component/ml/nn/sl/training/tensorflow/model.py", line 46, in call
2024-05-13T19:35:23.660223139+08:00 stderr F     return self.loaded(x, training=True)
2024-05-13T19:35:23.660226836+08:00 stderr F ValueError: Exception encountered when calling layer 'wrapper_model' (type WrapperModel).
2024-05-13T19:35:23.66022993+08:00 stderr F
2024-05-13T19:35:23.660233326+08:00 stderr F Could not find matching concrete function to call loaded from the SavedModel. Got:
2024-05-13T19:35:23.660236362+08:00 stderr F   Positional arguments (3 total):
2024-05-13T19:35:23.660239617+08:00 stderr F     * <tf.Tensor 'inputs:0' shape=(512, 13) dtype=float32>
2024-05-13T19:35:23.660242792+08:00 stderr F     * True
2024-05-13T19:35:23.660246327+08:00 stderr F     * None
2024-05-13T19:35:23.660249458+08:00 stderr F   Keyword arguments: {}
2024-05-13T19:35:23.660251502+08:00 stderr F
2024-05-13T19:35:23.660254434+08:00 stderr F  Expected these arguments to match one of the following 4 option(s):
2024-05-13T19:35:23.66025644+08:00 stderr F
2024-05-13T19:35:23.66025875+08:00 stderr F Option 1:
2024-05-13T19:35:23.660260954+08:00 stderr F   Positional arguments (3 total):
2024-05-13T19:35:23.660264126+08:00 stderr F     * TensorSpec(shape=(None, 4), dtype=tf.float32, name='input_2')
2024-05-13T19:35:23.66026662+08:00 stderr F     * True
2024-05-13T19:35:23.660269056+08:00 stderr F     * None
2024-05-13T19:35:23.66027141+08:00 stderr F   Keyword arguments: {}
2024-05-13T19:35:23.660273439+08:00 stderr F
2024-05-13T19:35:23.660275655+08:00 stderr F Option 2:
2024-05-13T19:35:23.660278112+08:00 stderr F   Positional arguments (3 total):
2024-05-13T19:35:23.660280401+08:00 stderr F     * TensorSpec(shape=(None, 4), dtype=tf.float32, name='input_2')
2024-05-13T19:35:23.660282619+08:00 stderr F     * False
2024-05-13T19:35:23.660284898+08:00 stderr F     * None
2024-05-13T19:35:23.660287123+08:00 stderr F   Keyword arguments: {}
2024-05-13T19:35:23.660289125+08:00 stderr F
2024-05-13T19:35:23.660291251+08:00 stderr F Option 3:
2024-05-13T19:35:23.660297839+08:00 stderr F   Positional arguments (3 total):
2024-05-13T19:35:23.660300207+08:00 stderr F     * TensorSpec(shape=(None, 4), dtype=tf.float32, name='inputs')
2024-05-13T19:35:23.660302448+08:00 stderr F     * True
2024-05-13T19:35:23.660304635+08:00 stderr F     * None
2024-05-13T19:35:23.660306746+08:00 stderr F   Keyword arguments: {}
2024-05-13T19:35:23.660308916+08:00 stderr F
2024-05-13T19:35:23.66031158+08:00 stderr F Option 4:
2024-05-13T19:35:23.660313928+08:00 stderr F   Positional arguments (3 total):
2024-05-13T19:35:23.660316272+08:00 stderr F     * TensorSpec(shape=(None, 4), dtype=tf.float32, name='inputs')
2024-05-13T19:35:23.660318541+08:00 stderr F     * False
2024-05-13T19:35:23.660320744+08:00 stderr F     * None
2024-05-13T19:35:23.660323067+08:00 stderr F   Keyword arguments: {}
2024-05-13T19:35:23.660325041+08:00 stderr F
2024-05-13T19:35:23.660327272+08:00 stderr F Call arguments received by layer 'wrapper_model' (type WrapperModel):
2024-05-13T19:35:23.660329612+08:00 stderr F   • x=tf.Tensor(shape=(512, 13), dtype=float32)
2024-05-13T19:35:23.832170114+08:00 stderr F 2024-05-13 11:35:23,831	ERROR worker.py:405 -- Unhandled error (suppress with 'RAY_IGNORE_UNHANDLED_ERRORS=1'): ray::PYUPipelineTFModel.fuse_net() (pid=752, ip=job-sltrain-0-global.bob.svc, actor_id=ef9dc6717669ec8333b8a3d801000000, repr=<secretflow.ml.nn.sl.backend.tensorflow.strategy.pipeline.PYUPipelineTFModel object at 0x7f254e65e8c0>)
2024-05-13T19:35:23.832212555+08:00 stderr F   File "/usr/local/lib/python3.10/site-packages/secretflow/device/proxy.py", line 76, in wrapper
2024-05-13T19:35:23.832223611+08:00 stderr F     return method(*args, **kwargs)
2024-05-13T19:35:23.832236427+08:00 stderr F   File "/usr/local/lib/python3.10/site-packages/secretflow/ml/nn/sl/backend/tensorflow/sl_base.py", line 509, in fuse_net
2024-05-13T19:35:23.83226503+08:00 stderr F     gradient = self._fuse_net_train(hiddens, losses)
2024-05-13T19:35:23.832275852+08:00 stderr F   File "/usr/local/lib/python3.10/site-packages/secretflow/device/proxy.py", line 76, in wrapper
2024-05-13T19:35:23.832282311+08:00 stderr F     return method(*args, **kwargs)
2024-05-13T19:35:23.832289635+08:00 stderr F   File "/usr/local/lib/python3.10/site-packages/secretflow/ml/nn/sl/backend/tensorflow/strategy/pipeline.py", line 134, in _fuse_net_train
2024-05-13T19:35:23.832297103+08:00 stderr F     return self._fuse_net_internal(
2024-05-13T19:35:23.832303334+08:00 stderr F   File "/usr/local/lib/python3.10/site-packages/tensorflow/python/util/traceback_utils.py", line 153, in error_handler
2024-05-13T19:35:23.832309479+08:00 stderr F     raise e.with_traceback(filtered_tb) from None
2024-05-13T19:35:23.832315639+08:00 stderr F   File "/tmp/__autograph_generated_filek4q4ucs1.py", line 23, in tf___fuse_net_internal
2024-05-13T19:35:23.832322136+08:00 stderr F     y_pred = ag__.converted_call(ag__.ld(self).model_fuse, (ag__.ld(hiddens),), dict(training=True, **ag__.ld(self).kwargs), fscope)
2024-05-13T19:35:23.832329413+08:00 stderr F   File "/usr/local/lib/python3.10/site-packages/keras/utils/traceback_utils.py", line 70, in error_handler
2024-05-13T19:35:23.832335632+08:00 stderr F     raise e.with_traceback(filtered_tb) from None
2024-05-13T19:35:23.832342545+08:00 stderr F   File "/tmp/__autograph_generated_filek9w763nk.py", line 12, in tf__call
2024-05-13T19:35:23.832359599+08:00 stderr F     retval_ = ag__.converted_call(ag__.ld(self).loaded, (ag__.ld(x),), dict(training=True), fscope)
2024-05-13T19:35:23.83236688+08:00 stderr F ValueError: in user code:
2024-05-13T19:35:23.832372576+08:00 stderr F
2024-05-13T19:35:23.832378881+08:00 stderr F     File "/usr/local/lib/python3.10/site-packages/secretflow/ml/nn/sl/backend/tensorflow/sl_base.py", line 696, in _fuse_net_internal  *
2024-05-13T19:35:23.832385061+08:00 stderr F         y_pred = self.model_fuse(hiddens, training=True, **self.kwargs)
2024-05-13T19:35:23.832391353+08:00 stderr F     File "/usr/local/lib/python3.10/site-packages/keras/utils/traceback_utils.py", line 70, in error_handler  **
2024-05-13T19:35:23.832397455+08:00 stderr F         raise e.with_traceback(filtered_tb) from None
2024-05-13T19:35:23.83240341+08:00 stderr F     File "/tmp/__autograph_generated_filek9w763nk.py", line 12, in tf__call
2024-05-13T19:35:23.832409605+08:00 stderr F         retval_ = ag__.converted_call(ag__.ld(self).loaded, (ag__.ld(x),), dict(training=True), fscope)
2024-05-13T19:35:23.832415122+08:00 stderr F
2024-05-13T19:35:23.832421145+08:00 stderr F     ValueError: Exception encountered when calling layer 'wrapper_model_1' (type WrapperModel).
2024-05-13T19:35:23.832427742+08:00 stderr F
2024-05-13T19:35:23.832434976+08:00 stderr F     in user code:
2024-05-13T19:35:23.832441786+08:00 stderr F
2024-05-13T19:35:23.832448266+08:00 stderr F         File "/usr/local/lib/python3.10/site-packages/secretflow/component/ml/nn/sl/training/tensorflow/model.py", line 46, in call  *
2024-05-13T19:35:23.832454286+08:00 stderr F             return self.loaded(x, training=True)
2024-05-13T19:35:23.832460457+08:00 stderr F
2024-05-13T19:35:23.832466659+08:00 stderr F         ValueError: Could not find matching concrete function to call loaded from the SavedModel. Got:
2024-05-13T19:35:23.832476921+08:00 stderr F           Positional arguments (3 total):
2024-05-13T19:35:23.832483312+08:00 stderr F             * []
2024-05-13T19:35:23.832489287+08:00 stderr F             * True
2024-05-13T19:35:23.832495226+08:00 stderr F             * None
2024-05-13T19:35:23.832501294+08:00 stderr F           Keyword arguments: {}
2024-05-13T19:35:23.832536733+08:00 stderr F
2024-05-13T19:35:23.832575669+08:00 stderr F          Expected these arguments to match one of the following 4 option(s):
2024-05-13T19:35:23.832588758+08:00 stderr F
2024-05-13T19:35:23.832603159+08:00 stderr F         Option 1:
2024-05-13T19:35:23.832609651+08:00 stderr F           Positional arguments (3 total):
2024-05-13T19:35:23.832615683+08:00 stderr F             * [TensorSpec(shape=(None, 64), dtype=tf.float32, name='input_3'),
2024-05-13T19:35:23.83262178+08:00 stderr F          TensorSpec(shape=(None, 64), dtype=tf.float32, name='input_4')]
2024-05-13T19:35:23.832634343+08:00 stderr F             * True
2024-05-13T19:35:23.832640404+08:00 stderr F             * None
2024-05-13T19:35:23.832646373+08:00 stderr F           Keyword arguments: {}
2024-05-13T19:35:23.832652319+08:00 stderr F
2024-05-13T19:35:23.832658567+08:00 stderr F         Option 2:
2024-05-13T19:35:23.832664593+08:00 stderr F           Positional arguments (3 total):
2024-05-13T19:35:23.832670637+08:00 stderr F             * [TensorSpec(shape=(None, 64), dtype=tf.float32, name='input_3'),
2024-05-13T19:35:23.832676902+08:00 stderr F          TensorSpec(shape=(None, 64), dtype=tf.float32, name='input_4')]
2024-05-13T19:35:23.832682944+08:00 stderr F             * False
2024-05-13T19:35:23.83268876+08:00 stderr F             * None
2024-05-13T19:35:23.832694678+08:00 stderr F           Keyword arguments: {}
2024-05-13T19:35:23.832700662+08:00 stderr F
2024-05-13T19:35:23.832706779+08:00 stderr F         Option 3:
2024-05-13T19:35:23.832712814+08:00 stderr F           Positional arguments (3 total):
2024-05-13T19:35:23.832718848+08:00 stderr F             * [TensorSpec(shape=(None, 64), dtype=tf.float32, name='inputs_0'),
2024-05-13T19:35:23.83272484+08:00 stderr F          TensorSpec(shape=(None, 64), dtype=tf.float32, name='inputs_1')]
2024-05-13T19:35:23.832730783+08:00 stderr F             * True
2024-05-13T19:35:23.832736603+08:00 stderr F             * None
2024-05-13T19:35:23.832742643+08:00 stderr F           Keyword arguments: {}
2024-05-13T19:35:23.832748487+08:00 stderr F
2024-05-13T19:35:23.832754578+08:00 stderr F         Option 4:
2024-05-13T19:35:23.83276049+08:00 stderr F           Positional arguments (3 total):
2024-05-13T19:35:23.832766493+08:00 stderr F             * [TensorSpec(shape=(None, 64), dtype=tf.float32, name='inputs_0'),
2024-05-13T19:35:23.832772453+08:00 stderr F          TensorSpec(shape=(None, 64), dtype=tf.float32, name='inputs_1')]
2024-05-13T19:35:23.832778287+08:00 stderr F             * False
2024-05-13T19:35:23.832784014+08:00 stderr F             * None
2024-05-13T19:35:23.832789874+08:00 stderr F           Keyword arguments: {}
2024-05-13T19:35:23.832795815+08:00 stderr F
2024-05-13T19:35:23.83280199+08:00 stderr F
2024-05-13T19:35:23.832842885+08:00 stderr F     Call arguments received by layer 'wrapper_model_1' (type WrapperModel):
2024-05-13T19:35:23.832849881+08:00 stderr F       • x=[]
2024-05-13T19:35:23.849875042+08:00 stderr F 2024-05-13 11:35:23,849	ERROR worker.py:405 -- Unhandled error (suppress with 'RAY_IGNORE_UNHANDLED_ERRORS=1'): ray::PYUPipelineTFModel.base_backward() (pid=752, ip=job-sltrain-0-global.bob.svc, actor_id=ef9dc6717669ec8333b8a3d801000000, repr=<secretflow.ml.nn.sl.backend.tensorflow.strategy.pipeline.PYUPipelineTFModel object at 0x7f254e65e8c0>)
2024-05-13T19:35:23.849900279+08:00 stderr F   File "/usr/local/lib/python3.10/site-packages/secretflow/device/proxy.py", line 76, in wrapper
2024-05-13T19:35:23.849905423+08:00 stderr F     return method(*args, **kwargs)
2024-05-13T19:35:23.849910287+08:00 stderr F   File "/usr/local/lib/python3.10/site-packages/secretflow/ml/nn/sl/backend/tensorflow/strategy/pipeline.py", line 110, in base_backward
2024-05-13T19:35:23.84991562+08:00 stderr F     h = self.hidden_list.pop(0)
2024-05-13T19:35:23.849919568+08:00 stderr F IndexError: pop from empty list
2024-05-13T19:35:23.861167702+08:00 stderr F 2024-05-13 11:35:23,860	ERROR worker.py:405 -- Unhandled error (suppress with 'RAY_IGNORE_UNHANDLED_ERRORS=1'): ray::PYUPipelineTFModel.base_forward() (pid=752, ip=job-sltrain-0-global.bob.svc, actor_id=ef9dc6717669ec8333b8a3d801000000, repr=<secretflow.ml.nn.sl.backend.tensorflow.strategy.pipeline.PYUPipelineTFModel object at 0x7f254e65e8c0>)
2024-05-13T19:35:23.861204313+08:00 stderr F   File "/usr/local/lib/python3.10/site-packages/secretflow/device/proxy.py", line 76, in wrapper
2024-05-13T19:35:23.86121068+08:00 stderr F     return method(*args, **kwargs)
2024-05-13T19:35:23.861215867+08:00 stderr F   File "/usr/local/lib/python3.10/site-packages/secretflow/ml/nn/sl/backend/tensorflow/strategy/pipeline.py", line 91, in base_forward
2024-05-13T19:35:23.86122013+08:00 stderr F     self._h = self._base_forward_internal(
2024-05-13T19:35:23.861224228+08:00 stderr F   File "/usr/local/lib/python3.10/site-packages/secretflow/device/proxy.py", line 76, in wrapper
2024-05-13T19:35:23.861228747+08:00 stderr F     return method(*args, **kwargs)
2024-05-13T19:35:23.861240241+08:00 stderr F   File "/usr/local/lib/python3.10/site-packages/secretflow/ml/nn/sl/backend/tensorflow/sl_base.py", line 653, in _base_forward_internal
2024-05-13T19:35:23.861245495+08:00 stderr F     h = self.model_base(data_x, training=training)
2024-05-13T19:35:23.861250394+08:00 stderr F   File "/usr/local/lib/python3.10/site-packages/keras/utils/traceback_utils.py", line 70, in error_handler
2024-05-13T19:35:23.861254338+08:00 stderr F     raise e.with_traceback(filtered_tb) from None
2024-05-13T19:35:23.86125931+08:00 stderr F   File "/usr/local/lib/python3.10/site-packages/secretflow/component/ml/nn/sl/training/tensorflow/model.py", line 46, in call
2024-05-13T19:35:23.861263439+08:00 stderr F     return self.loaded(x, training=True)
2024-05-13T19:35:23.861267465+08:00 stderr F ValueError: Exception encountered when calling layer 'wrapper_model' (type WrapperModel).
2024-05-13T19:35:23.861271216+08:00 stderr F
2024-05-13T19:35:23.861275463+08:00 stderr F Could not find matching concrete function to call loaded from the SavedModel. Got:
2024-05-13T19:35:23.861279804+08:00 stderr F   Positional arguments (3 total):
2024-05-13T19:35:23.861283831+08:00 stderr F     * <tf.Tensor 'inputs:0' shape=(512, 13) dtype=float32>
2024-05-13T19:35:23.861287972+08:00 stderr F     * True
2024-05-13T19:35:23.861291998+08:00 stderr F     * None
2024-05-13T19:35:23.861296728+08:00 stderr F   Keyword arguments: {}
2024-05-13T19:35:23.861300487+08:00 stderr F
2024-05-13T19:35:23.8613051+08:00 stderr F  Expected these arguments to match one of the following 4 option(s):
2024-05-13T19:35:23.861308903+08:00 stderr F
2024-05-13T19:35:23.861313169+08:00 stderr F Option 1:
2024-05-13T19:35:23.861317227+08:00 stderr F   Positional arguments (3 total):
2024-05-13T19:35:23.861321297+08:00 stderr F     * TensorSpec(shape=(None, 4), dtype=tf.float32, name='input_2')
2024-05-13T19:35:23.861325321+08:00 stderr F     * True
2024-05-13T19:35:23.861329295+08:00 stderr F     * None
2024-05-13T19:35:23.861333223+08:00 stderr F   Keyword arguments: {}
2024-05-13T19:35:23.861336904+08:00 stderr F
2024-05-13T19:35:23.861341393+08:00 stderr F Option 2:
2024-05-13T19:35:23.861345766+08:00 stderr F   Positional arguments (3 total):
2024-05-13T19:35:23.861349774+08:00 stderr F     * TensorSpec(shape=(None, 4), dtype=tf.float32, name='input_2')
2024-05-13T19:35:23.861353964+08:00 stderr F     * False
2024-05-13T19:35:23.861358001+08:00 stderr F     * None
2024-05-13T19:35:23.861361904+08:00 stderr F   Keyword arguments: {}
2024-05-13T19:35:23.861365624+08:00 stderr F
2024-05-13T19:35:23.861369753+08:00 stderr F Option 3:
2024-05-13T19:35:23.86137435+08:00 stderr F   Positional arguments (3 total):
2024-05-13T19:35:23.861378762+08:00 stderr F     * TensorSpec(shape=(None, 4), dtype=tf.float32, name='inputs')
2024-05-13T19:35:23.861382774+08:00 stderr F     * True
2024-05-13T19:35:23.861386695+08:00 stderr F     * None
2024-05-13T19:35:23.861390654+08:00 stderr F   Keyword arguments: {}
2024-05-13T19:35:23.861394351+08:00 stderr F
2024-05-13T19:35:23.861398249+08:00 stderr F Option 4:
2024-05-13T19:35:23.861402234+08:00 stderr F   Positional arguments (3 total):
2024-05-13T19:35:23.861406351+08:00 stderr F     * TensorSpec(shape=(None, 4), dtype=tf.float32, name='inputs')
2024-05-13T19:35:23.861416502+08:00 stderr F     * False
2024-05-13T19:35:23.861421047+08:00 stderr F     * None
2024-05-13T19:35:23.861425343+08:00 stderr F   Keyword arguments: {}
2024-05-13T19:35:23.861429024+08:00 stderr F
2024-05-13T19:35:23.861433091+08:00 stderr F Call arguments received by layer 'wrapper_model' (type WrapperModel):
2024-05-13T19:35:23.861437205+08:00 stderr F   • x=tf.Tensor(shape=(512, 13), dtype=float32)
2024-05-13T19:35:23.898776713+08:00 stderr F 2024-05-13 11:35:23,898	ERROR worker.py:405 -- Unhandled error (suppress with 'RAY_IGNORE_UNHANDLED_ERRORS=1'): ray::PYUPipelineTFModel.fuse_net() (pid=752, ip=job-sltrain-0-global.bob.svc, actor_id=ef9dc6717669ec8333b8a3d801000000, repr=<secretflow.ml.nn.sl.backend.tensorflow.strategy.pipeline.PYUPipelineTFModel object at 0x7f254e65e8c0>)
2024-05-13T19:35:23.898798773+08:00 stderr F   File "/usr/local/lib/python3.10/site-packages/secretflow/device/proxy.py", line 76, in wrapper
2024-05-13T19:35:23.89880318+08:00 stderr F     return method(*args, **kwargs)
2024-05-13T19:35:23.898810847+08:00 stderr F   File "/usr/local/lib/python3.10/site-packages/secretflow/ml/nn/sl/backend/tensorflow/sl_base.py", line 509, in fuse_net
2024-05-13T19:35:23.898814959+08:00 stderr F     gradient = self._fuse_net_train(hiddens, losses)
2024-05-13T19:35:23.898818209+08:00 stderr F   File "/usr/local/lib/python3.10/site-packages/secretflow/device/proxy.py", line 76, in wrapper
2024-05-13T19:35:23.898821252+08:00 stderr F     return method(*args, **kwargs)
2024-05-13T19:35:23.898825329+08:00 stderr F   File "/usr/local/lib/python3.10/site-packages/secretflow/ml/nn/sl/backend/tensorflow/strategy/pipeline.py", line 134, in _fuse_net_train
2024-05-13T19:35:23.898828855+08:00 stderr F     return self._fuse_net_internal(
2024-05-13T19:35:23.898832113+08:00 stderr F   File "/usr/local/lib/python3.10/site-packages/tensorflow/python/util/traceback_utils.py", line 153, in error_handler
2024-05-13T19:35:23.898835396+08:00 stderr F     raise e.with_traceback(filtered_tb) from None
2024-05-13T19:35:23.898838383+08:00 stderr F   File "/tmp/__autograph_generated_filek4q4ucs1.py", line 23, in tf___fuse_net_internal
2024-05-13T19:35:23.898841428+08:00 stderr F     y_pred = ag__.converted_call(ag__.ld(self).model_fuse, (ag__.ld(hiddens),), dict(training=True, **ag__.ld(self).kwargs), fscope)
2024-05-13T19:35:23.898845158+08:00 stderr F   File "/usr/local/lib/python3.10/site-packages/keras/utils/traceback_utils.py", line 70, in error_handler
2024-05-13T19:35:23.898848038+08:00 stderr F     raise e.with_traceback(filtered_tb) from None
2024-05-13T19:35:23.898851652+08:00 stderr F   File "/tmp/__autograph_generated_filek9w763nk.py", line 12, in tf__call
2024-05-13T19:35:23.898854639+08:00 stderr F     retval_ = ag__.converted_call(ag__.ld(self).loaded, (ag__.ld(x),), dict(training=True), fscope)
2024-05-13T19:35:23.898858669+08:00 stderr F ValueError: in user code:
2024-05-13T19:35:23.898861373+08:00 stderr F
2024-05-13T19:35:23.898864492+08:00 stderr F     File "/usr/local/lib/python3.10/site-packages/secretflow/ml/nn/sl/backend/tensorflow/sl_base.py", line 696, in _fuse_net_internal  *
2024-05-13T19:35:23.898867654+08:00 stderr F         y_pred = self.model_fuse(hiddens, training=True, **self.kwargs)
2024-05-13T19:35:23.89887089+08:00 stderr F     File "/usr/local/lib/python3.10/site-packages/keras/utils/traceback_utils.py", line 70, in error_handler  **
2024-05-13T19:35:23.898873924+08:00 stderr F         raise e.with_traceback(filtered_tb) from None
2024-05-13T19:35:23.898876877+08:00 stderr F     File "/tmp/__autograph_generated_filek9w763nk.py", line 12, in tf__call
2024-05-13T19:35:23.898880281+08:00 stderr F         retval_ = ag__.converted_call(ag__.ld(self).loaded, (ag__.ld(x),), dict(training=True), fscope)
2024-05-13T19:35:23.898882916+08:00 stderr F
2024-05-13T19:35:23.898885819+08:00 stderr F     ValueError: Exception encountered when calling layer 'wrapper_model_1' (type WrapperModel).
2024-05-13T19:35:23.898888813+08:00 stderr F
2024-05-13T19:35:23.898906062+08:00 stderr F     in user code:
2024-05-13T19:35:23.898909547+08:00 stderr F
2024-05-13T19:35:23.898912611+08:00 stderr F         File "/usr/local/lib/python3.10/site-packages/secretflow/component/ml/nn/sl/training/tensorflow/model.py", line 46, in call  *
2024-05-13T19:35:23.898915527+08:00 stderr F             return self.loaded(x, training=True)
2024-05-13T19:35:23.898918448+08:00 stderr F
2024-05-13T19:35:23.898921426+08:00 stderr F         ValueError: Could not find matching concrete function to call loaded from the SavedModel. Got:
2024-05-13T19:35:23.898924324+08:00 stderr F           Positional arguments (3 total):
2024-05-13T19:35:23.89892721+08:00 stderr F             * []
2024-05-13T19:35:23.898930217+08:00 stderr F             * True
2024-05-13T19:35:23.89893671+08:00 stderr F             * None
2024-05-13T19:35:23.898939796+08:00 stderr F           Keyword arguments: {}
2024-05-13T19:35:23.898942667+08:00 stderr F
2024-05-13T19:35:23.898945706+08:00 stderr F          Expected these arguments to match one of the following 4 option(s):
2024-05-13T19:35:23.898949516+08:00 stderr F
2024-05-13T19:35:23.898952645+08:00 stderr F         Option 1:
2024-05-13T19:35:23.898955668+08:00 stderr F           Positional arguments (3 total):
2024-05-13T19:35:23.898958817+08:00 stderr F             * [TensorSpec(shape=(None, 64), dtype=tf.float32, name='input_3'),
2024-05-13T19:35:23.898962125+08:00 stderr F          TensorSpec(shape=(None, 64), dtype=tf.float32, name='input_4')]
2024-05-13T19:35:23.898965162+08:00 stderr F             * True
2024-05-13T19:35:23.898968601+08:00 stderr F             * None
2024-05-13T19:35:23.89897154+08:00 stderr F           Keyword arguments: {}
2024-05-13T19:35:23.898974478+08:00 stderr F
2024-05-13T19:35:23.898977378+08:00 stderr F         Option 2:
2024-05-13T19:35:23.898980259+08:00 stderr F           Positional arguments (3 total):
2024-05-13T19:35:23.898983327+08:00 stderr F             * [TensorSpec(shape=(None, 64), dtype=tf.float32, name='input_3'),
2024-05-13T19:35:23.898986414+08:00 stderr F          TensorSpec(shape=(None, 64), dtype=tf.float32, name='input_4')]
2024-05-13T19:35:23.898989373+08:00 stderr F             * False
2024-05-13T19:35:23.898992162+08:00 stderr F             * None
2024-05-13T19:35:23.898995004+08:00 stderr F           Keyword arguments: {}
2024-05-13T19:35:23.898997959+08:00 stderr F
2024-05-13T19:35:23.899000797+08:00 stderr F         Option 3:
2024-05-13T19:35:23.899003652+08:00 stderr F           Positional arguments (3 total):
2024-05-13T19:35:23.899008036+08:00 stderr F             * [TensorSpec(shape=(None, 64), dtype=tf.float32, name='inputs_0'),
2024-05-13T19:35:23.899011328+08:00 stderr F          TensorSpec(shape=(None, 64), dtype=tf.float32, name='inputs_1')]
2024-05-13T19:35:23.899014342+08:00 stderr F             * True
2024-05-13T19:35:23.899017119+08:00 stderr F             * None
2024-05-13T19:35:23.899019969+08:00 stderr F           Keyword arguments: {}
2024-05-13T19:35:23.899022881+08:00 stderr F
2024-05-13T19:35:23.899025774+08:00 stderr F         Option 4:
2024-05-13T19:35:23.899028977+08:00 stderr F           Positional arguments (3 total):
2024-05-13T19:35:23.89903201+08:00 stderr F             * [TensorSpec(shape=(None, 64), dtype=tf.float32, name='inputs_0'),
2024-05-13T19:35:23.89903496+08:00 stderr F          TensorSpec(shape=(None, 64), dtype=tf.float32, name='inputs_1')]
2024-05-13T19:35:23.899037778+08:00 stderr F             * False
2024-05-13T19:35:23.899040711+08:00 stderr F             * None
2024-05-13T19:35:23.899043627+08:00 stderr F           Keyword arguments: {}
2024-05-13T19:35:23.899046482+08:00 stderr F
2024-05-13T19:35:23.899049411+08:00 stderr F
2024-05-13T19:35:23.899065486+08:00 stderr F     Call arguments received by layer 'wrapper_model_1' (type WrapperModel):
2024-05-13T19:35:23.899068721+08:00 stderr F       • x=[]
2024-05-13T19:35:23.913051859+08:00 stderr F 2024-05-13 11:35:23,912	ERROR worker.py:405 -- Unhandled error (suppress with 'RAY_IGNORE_UNHANDLED_ERRORS=1'): ray::PYUPipelineTFModel.base_backward() (pid=752, ip=job-sltrain-0-global.bob.svc, actor_id=ef9dc6717669ec8333b8a3d801000000, repr=<secretflow.ml.nn.sl.backend.tensorflow.strategy.pipeline.PYUPipelineTFModel object at 0x7f254e65e8c0>)
2024-05-13T19:35:23.913085011+08:00 stderr F   File "/usr/local/lib/python3.10/site-packages/secretflow/device/proxy.py", line 76, in wrapper
2024-05-13T19:35:23.913089412+08:00 stderr F     return method(*args, **kwargs)
2024-05-13T19:35:23.913093037+08:00 stderr F   File "/usr/local/lib/python3.10/site-packages/secretflow/ml/nn/sl/backend/tensorflow/strategy/pipeline.py", line 110, in base_backward
2024-05-13T19:35:23.913096447+08:00 stderr F     h = self.hidden_list.pop(0)
2024-05-13T19:35:23.91309975+08:00 stderr F IndexError: pop from empty list
2024-05-13T19:35:23.923813903+08:00 stderr F 2024-05-13 11:35:23,923	ERROR worker.py:405 -- Unhandled error (suppress with 'RAY_IGNORE_UNHANDLED_ERRORS=1'): ray::PYUPipelineTFModel.base_forward() (pid=752, ip=job-sltrain-0-global.bob.svc, actor_id=ef9dc6717669ec8333b8a3d801000000, repr=<secretflow.ml.nn.sl.backend.tensorflow.strategy.pipeline.PYUPipelineTFModel object at 0x7f254e65e8c0>)
2024-05-13T19:35:23.923834186+08:00 stderr F   File "/usr/local/lib/python3.10/site-packages/secretflow/device/proxy.py", line 76, in wrapper
2024-05-13T19:35:23.923839517+08:00 stderr F     return method(*args, **kwargs)
2024-05-13T19:35:23.923843839+08:00 stderr F   File "/usr/local/lib/python3.10/site-packages/secretflow/ml/nn/sl/backend/tensorflow/strategy/pipeline.py", line 91, in base_forward
2024-05-13T19:35:23.923847322+08:00 stderr F     self._h = self._base_forward_internal(
2024-05-13T19:35:23.923850949+08:00 stderr F   File "/usr/local/lib/python3.10/site-packages/secretflow/device/proxy.py", line 76, in wrapper
2024-05-13T19:35:23.923854231+08:00 stderr F     return method(*args, **kwargs)
2024-05-13T19:35:23.92385757+08:00 stderr F   File "/usr/local/lib/python3.10/site-packages/secretflow/ml/nn/sl/backend/tensorflow/sl_base.py", line 653, in _base_forward_internal
2024-05-13T19:35:23.923861682+08:00 stderr F     h = self.model_base(data_x, training=training)
2024-05-13T19:35:23.923865766+08:00 stderr F   File "/usr/local/lib/python3.10/site-packages/keras/utils/traceback_utils.py", line 70, in error_handler
2024-05-13T19:35:23.92387063+08:00 stderr F     raise e.with_traceback(filtered_tb) from None
2024-05-13T19:35:23.923876327+08:00 stderr F   File "/usr/local/lib/python3.10/site-packages/secretflow/component/ml/nn/sl/training/tensorflow/model.py", line 46, in call
2024-05-13T19:35:23.923881972+08:00 stderr F     return self.loaded(x, training=True)
2024-05-13T19:35:23.923886879+08:00 stderr F ValueError: Exception encountered when calling layer 'wrapper_model' (type WrapperModel).
2024-05-13T19:35:23.923891348+08:00 stderr F
2024-05-13T19:35:23.923895463+08:00 stderr F Could not find matching concrete function to call loaded from the SavedModel. Got:
2024-05-13T19:35:23.923899018+08:00 stderr F   Positional arguments (3 total):
2024-05-13T19:35:23.923902224+08:00 stderr F     * <tf.Tensor 'inputs:0' shape=(512, 13) dtype=float32>
2024-05-13T19:35:23.923905806+08:00 stderr F     * True
2024-05-13T19:35:23.92390895+08:00 stderr F     * None
2024-05-13T19:35:23.923912764+08:00 stderr F   Keyword arguments: {}
2024-05-13T19:35:23.923915685+08:00 stderr F
2024-05-13T19:35:23.923919598+08:00 stderr F  Expected these arguments to match one of the following 4 option(s):
2024-05-13T19:35:23.923922568+08:00 stderr F
2024-05-13T19:35:23.923938741+08:00 stderr F Option 1:
2024-05-13T19:35:23.923942254+08:00 stderr F   Positional arguments (3 total):
2024-05-13T19:35:23.923954901+08:00 stderr F     * TensorSpec(shape=(None, 4), dtype=tf.float32, name='input_2')
2024-05-13T19:35:23.923958197+08:00 stderr F     * True
2024-05-13T19:35:23.923961397+08:00 stderr F     * None
2024-05-13T19:35:23.923964561+08:00 stderr F   Keyword arguments: {}
2024-05-13T19:35:23.923974595+08:00 stderr F
2024-05-13T19:35:23.923978332+08:00 stderr F Option 2:
2024-05-13T19:35:23.92398167+08:00 stderr F   Positional arguments (3 total):
2024-05-13T19:35:23.923984888+08:00 stderr F     * TensorSpec(shape=(None, 4), dtype=tf.float32, name='input_2')
2024-05-13T19:35:23.92398815+08:00 stderr F     * False
2024-05-13T19:35:23.923991542+08:00 stderr F     * None
2024-05-13T19:35:23.923994768+08:00 stderr F   Keyword arguments: {}

执行任务的yaml文件如下:
apiVersion: kuscia.secretflow/v1alpha1
kind: KusciaJob
metadata:
  name: job-best-effort-linear-train
  namespace: cross-domain
spec:
  initiator: alice
  scheduleMode: BestEffort
  maxParallelism: 3
  tasks:
  - taskID: job-psi
    alias: job-psi
    priority: 100
    taskInputConfig: '{"sf_datasource_config":{"alice":{"id":"default-data-source"},"bob":{"id":"default-data-source"}},"sf_cluster_desc":{"parties":["alice","bob"],"devices":[{"name":"spu","type":"spu","parties":["alice","bob"],"config":"{\"runtime_config\":{\"protocol\":\"REF2K\",\"field\":\"FM64\"},\"link_desc\":{\"connect_retry_times\":60,\"connect_retry_interval_ms\":1000,\"brpc_channel_protocol\":\"http\",\"brpc_channel_connection_type\":\"pooled\",\"recv_timeout_ms\":1200000,\"http_timeout_ms\":1200000}}"},{"name":"heu","type":"heu","parties":["alice","bob"],"config":"{\"mode\":\"PHEU\",\"schema\":\"paillier\",\"key_size\":2048}"}],"ray_fed_config":{"cross_silo_comm_backend":"brpc_link"}},"sf_node_eval_param":{"domain":"data_prep","name":"psi","version":"0.0.4","attr_paths":["input/receiver_input/key","input/sender_input/key","protocol","precheck_input","bucket_size","curve_type","left_side"],"attrs":[{"ss":["id1"]},{"ss":["id2"]},{"s":"PROTOCOL_ECDH"},{"b":true},{"i64":"1048576"},{"s":"CURVE_FOURQ"},{"is_na":false,"ss":["alice"]}]},"sf_input_ids":["alice-table","bob-table"],"sf_output_ids":["psi-output"],"sf_output_uris":["psi-output.csv"]}'
    appImage: secretflow-image
    parties:
    - domainID: alice
    - domainID: bob
  - taskID: job-split
    alias: job-split
    priority: 100
    taskInputConfig: '{"sf_datasource_config":{"alice":{"id":"default-data-source"},"bob":{"id":"default-data-source"}},"sf_cluster_desc":{"parties":["alice","bob"],"devices":[{"name":"spu","type":"spu","parties":["alice","bob"],"config":"{\"runtime_config\":{\"protocol\":\"REF2K\",\"field\":\"FM64\"},\"link_desc\":{\"connect_retry_times\":60,\"connect_retry_interval_ms\":1000,\"brpc_channel_protocol\":\"http\",\"brpc_channel_connection_type\":\"pooled\",\"recv_timeout_ms\":1200000,\"http_timeout_ms\":1200000}}"},{"name":"heu","type":"heu","parties":["alice","bob"],"config":"{\"mode\":\"PHEU\",\"schema\":\"paillier\",\"key_size\":2048}"}],"ray_fed_config":{"cross_silo_comm_backend":"brpc_link"}},"sf_node_eval_param":{"domain":"data_prep","name":"train_test_split","version":"0.0.1","attr_paths":["train_size","test_size","random_state","shuffle"],"attrs":[{"f":0.75},{"f":0.25},{"i64":1234},{"b":true}]},"sf_input_ids":["psi-output"],"sf_output_ids":["train-dataset","test-dataset"],"sf_output_uris":["train-dataset.csv","test-dataset.csv"]}'
    appImage: secretflow-image
    parties:
    - domainID: alice
    - domainID: bob
    dependencies:
    - job-psi
  - taskID: job-sltrain
    alias: job-sltrain
    priority: 100
    taskInputConfig: '{"sf_datasource_config":{"alice":{"id":"default-data-source"},"bob":{"id":"default-data-source"}},"sf_cluster_desc":{"parties":["alice","bob"],"devices":[{"name":"spu","type":"spu","parties":["alice","bob"],"config":"{\"runtime_config\":{\"protocol\":\"REF2K\",\"field\":\"FM64\"},\"link_desc\":{\"connect_retry_times\":60,\"connect_retry_interval_ms\":1000,\"brpc_channel_protocol\":\"http\",\"brpc_channel_connection_type\":\"pooled\",\"recv_timeout_ms\":1200000,\"http_timeout_ms\":1200000}}"},{"name":"heu","type":"heu","parties":["alice","bob"],"config":"{\"mode\":\"PHEU\",\"schema\":\"paillier\",\"key_size\":2048}"}],"ray_fed_config":{"cross_silo_comm_backend":"brpc_link"}},"sf_node_eval_param":{"domain":"ml.train","name":"slnn_train","version":"0.0.1","attr_paths":["input/train_dataset/feature_selects","input/train_dataset/label","models","loss","loss/builtin","optimizer/name","model_input_scheme"],"attrs":[{"ss":["contact_cellular","contact_telephone","contact_unknown","month_apr","month_aug","month_dec","month_feb","month_jan","month_jul","month_jun","poutcome_failure","poutcome_other","poutcome_success"]},{"ss":["y"]},{"s":"#
      pre imported:\n# import tensorflow as tf\n# from tensorflow import Module, keras\n#
      from tensorflow.keras import Model, layers\n# from tensorflow.keras.layers import
      Layer\n# from secretflow.ml.nn import applications as apps\n\ndef create_base_model(input_dim,
      output_dim):\n    model = keras.Sequential(\n        [\n            keras.Input(shape=input_dim),\n            layers.Dense(100,
      activation=\"relu\"),\n            layers.Dense(output_dim, activation=\"relu\"),\n        ]\n    )\n    return
      model\n\ndef create_fuse_model(input_dim):\n    input_layers = [keras.Input(input_dim),
      keras.Input(input_dim)]\n    merged_layer = layers.concatenate(input_layers)\n    fuse_layer
      = layers.Dense(64, activation=''relu'')(merged_layer)\n    output = layers.Dense(1,
      activation=''sigmoid'')(fuse_layer)\n    return keras.Model(inputs=input_layers,
      outputs=output)\n\nhidden_size = 64\n\nfit(\n    client_base=create_base_model(12,
      hidden_size),\n    server_base=create_base_model(4, hidden_size),\n    server_fuse=create_fuse_model(hidden_size),\n)\n"},{"s":"builtin"},{"s":"mean_squared_error"},{"s":"Adam"},{"s":"tensor"}]},"sf_input_ids":["train-dataset"],"sf_output_ids":["sl-outputmodel","sl-outputreports"],"sf_output_uris":["sl-outputmodel","sl-outputreports"]}'
    appImage: secretflow-image
    parties:
    - domainID: alice
    - domainID: bob
    dependencies:
    - job-split

2024-05-13T19:35:23.861275463+08:00 stderr F Could not find matching concrete function to call loaded from the SavedModel. Got:
2024-05-13T19:35:23.861279804+08:00 stderr F   Positional arguments (3 total):
2024-05-13T19:35:23.861283831+08:00 stderr F     * <tf.Tensor 'inputs:0' shape=(512, 13) dtype=float32>
2024-05-13T19:35:23.861287972+08:00 stderr F     * True
2024-05-13T19:35:23.861291998+08:00 stderr F     * None
2024-05-13T19:35:23.861296728+08:00 stderr F   Keyword arguments: {}
2024-05-13T19:35:23.861300487+08:00 stderr F
2024-05-13T19:35:23.8613051+08:00 stderr F  Expected these arguments to match one of the following 4 option(s):
2024-05-13T19:35:23.861308903+08:00 stderr F
2024-05-13T19:35:23.861313169+08:00 stderr F Option 1:
2024-05-13T19:35:23.861317227+08:00 stderr F   Positional arguments (3 total):
2024-05-13T19:35:23.861321297+08:00 stderr F     * TensorSpec(shape=(None, 4), dtype=tf.float32, name='input_2')
2024-05-13T19:35:23.861325321+08:00 stderr F     * True
2024-05-13T19:35:23.861329295+08:00 stderr F     * None
2024-05-13T19:35:23.861333223+08:00 stderr F   Keyword arguments: {}
2024-05-13T19:35:23.861336904+08:00 stderr F
2024-05-13T19:35:23.861341393+08:00 stderr F Option 2:
2024-05-13T19:35:23.861345766+08:00 stderr F   Positional arguments (3 total):
2024-05-13T19:35:23.861349774+08:00 stderr F     * TensorSpec(shape=(None, 4), dtype=tf.float32, name='input_2')
2024-05-13T19:35:23.861353964+08:00 stderr F     * False
2024-05-13T19:35:23.861358001+08:00 stderr F     * None
2024-05-13T19:35:23.861361904+08:00 stderr F   Keyword arguments: {}
2024-05-13T19:35:23.861365624+08:00 stderr F
2024-05-13T19:35:23.861369753+08:00 stderr F Option 3:
2024-05-13T19:35:23.86137435+08:00 stderr F   Positional arguments (3 total):
2024-05-13T19:35:23.861378762+08:00 stderr F     * TensorSpec(shape=(None, 4), dtype=tf.float32, name='inputs')
2024-05-13T19:35:23.861382774+08:00 stderr F     * True
2024-05-13T19:35:23.861386695+08:00 stderr F     * None
2024-05-13T19:35:23.861390654+08:00 stderr F   Keyword arguments: {}
2024-05-13T19:35:23.861394351+08:00 stderr F
2024-05-13T19:35:23.861398249+08:00 stderr F Option 4:
2024-05-13T19:35:23.861402234+08:00 stderr F   Positional arguments (3 total):
2024-05-13T19:35:23.861406351+08:00 stderr F     * TensorSpec(shape=(None, 4), dtype=tf.float32, name='inputs')
2024-05-13T19:35:23.861416502+08:00 stderr F     * False
2024-05-13T19:35:23.861421047+08:00 stderr F     * None
2024-05-13T19:35:23.861425343+08:00 stderr F   Keyword arguments: {}

报错里面的关键信息是这一段：是说输入数据的维度和模型定义不匹配，输入数据的维度是 13，但是模型定义的输入维度是 4。需要修改一下输入数据特征数量或者修改模型定义代码

@ian-huu 查看sl-outputmodel的内容如下:
[root@root-kuscia-lite-alice kuscia]# curl -X POST 'https://127.0.0.1:8082/api/v1/domaindata/query' --header "Token: $(cat /home/kuscia/var/certs/token)" --header 'Content-Type: application/json' -d '{
>   "data": {
>    "domain_id": "alice",
>    "domaindata_id": "sl-outputmodel"
>    }
>  }' --cacert /home/kuscia/var/certs/ca.crt --cert /home/kuscia/var/certs/ca.crt --key /home/kuscia/var/certs/ca.key
{"status":{"code":0, "message":"success", "details":[]}, "data":{"domaindata_id":"sl-outputmodel", "name":"sl-outputmodel", "type":"table", "relative_uri":"sl-outputmodel", "domain_id":"alice", "datasource_id":"default-data-source", "attributes":{"dist_data":"{\n  \"name\": \"sl-outputmodel\",\n  \"type\": \"sf.table.vertical_table\",\n  \"systemInfo\": {\n    \"app\": \"\"\n  },\n  \"meta\": {\n    \"@type\": \"type.googleapis.com/secretflow.spec.v1.VerticalTable\",\n    \"schemas\": [\n      {\n        \"ids\": [\n          \"id1\"\n        ],\n        \"features\": [\n          \"age\",\n          \"education\",\n          \"default\",\n          \"balance\",\n          \"housing\",\n          \"loan\",\n          \"day\",\n          \"duration\",\n          \"campaign\",\n          \"pdays\",\n          \"previous\",\n          \"job_blue-collar\",\n          \"job_entrepreneur\",\n          \"job_housemaid\",\n          \"job_management\",\n          \"job_retired\",\n          \"job_self-employed\",\n          \"job_services\",\n          \"job_student\",\n          \"job_technician\",\n          \"job_unemployed\",\n          \"marital_divorced\",\n          \"marital_married\",\n          \"marital_single\"\n        ],\n        \"idTypes\": [\n          \"str\"\n        ],\n        \"featureTypes\": [\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\"\n        ],\n        \"labels\": [],\n        \"labelTypes\": []\n      },\n      {\n        \"ids\": [\n          \"id2\"\n        ],\n        \"features\": [\n          \"contact_cellular\",\n          \"contact_telephone\",\n          \"contact_unknown\",\n          \"month_apr\",\n          \"month_aug\",\n          \"month_dec\",\n          \"month_feb\",\n          \"month_jan\",\n          \"month_jul\",\n          \"month_jun\",\n          \"month_mar\",\n          \"month_may\",\n          \"month_nov\",\n          \"month_oct\",\n          \"month_sep\",\n          \"poutcome_failure\",\n          \"poutcome_other\",\n          \"poutcome_success\",\n          \"poutcome_unknown\",\n          \"y\"\n        ],\n        \"idTypes\": [\n          \"str\"\n        ],\n        \"featureTypes\": [\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"float\",\n          \"int\"\n        ],\n        \"labels\": [],\n        \"labelTypes\": []\n      }\n    ],\n    \"lineCount\": \"5564\"\n  },\n  \"dataRefs\": [\n    {\n      \"uri\": \"sl-outputmodel\",\n      \"party\": \"alice\",\n      \"format\": \"csv\"\n    },\n    {\n      \"uri\": \"sl-outputmodel\",\n      \"party\": \"bob\",\n      \"format\": \"csv\"\n    }\n  ]\n}"}, "partition":null, "columns":[{"name":"id1", "type":"str", "comment":"id", "not_nullable":false}, {"name":"age", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"education", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"default", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"balance", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"housing", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"loan", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"day", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"duration", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"campaign", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"pdays", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"previous", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_blue-collar", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_entrepreneur", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_housemaid", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_management", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_retired", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_self-employed", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_services", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_student", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_technician", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"job_unemployed", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"marital_divorced", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"marital_married", "type":"float", "comment":"feature", "not_nullable":false}, {"name":"marital_single", "type":"float", "comment":"feature", "not_nullable":false}], "vendor":"secretflow", "status":"Available", "author":"alice", "file

而直接进入 alice容器中 /home/kuscia/var/storage/data/sl-outputmodel 使用cat进行查看则是一个csv格式的表格,内容大致如下:
id1,age,education,default,balance,housing,loan,day,duration,campaign,pdays,previous,job_blue-collar,job_entrepreneur,job_housemaid,job_management,job_retired,job_self-employed,job_services,job_student,job_technician,job_unemployed,marital_divorced,marital_married,marital_single
4470,0.4288318845995248,-0.3053083468611561,-0.117184991347747,-0.2934470834152572,1.0358211226635177,-0.3925867711542392,1.603834707067901,2.147532144701344,3.339289085669602,-0.4852053503766987,-0.3619838367558999,-0.4639325546169564,-0.1731690076375218,-0.1580237499348341,1.3543943126559297,-0.2734046609851663,-0.1960131708137989,-0.3006459829345367,-0.1700475343179241,-0.4466166954522901,-0.1840186845246444,-0.3589389310523966,0.8806950470683438,-0.6902303314457872
10452,0.2593245819498875,-0.3053083468611561,-0.117184991347747,-0.283492656187211,-0.9654176557324816,-0.3925867711542392,0.290377274537326,-0.8614847372511674,0.598413650662064,-0.4852053503766987,-0.3619838367558999,-0.4639325546169564,5.774705379690138,-0.1580237499348341,-0.7383374181770063,-0.2734046609851663,-0.1960131708137989,-0.3006459829345367,-0.1700475343179241,-0.4466166954522901,-0.1840186845246444,-0.3589389310523966,0.8806950470683438,-0.6902303314457872
7558,-0.1644436746742058,1.1972340248555386,-0.117184991347747,-0.3685577615905156,-0.9654176557324816,-0.3925867711542392,0.4097824956764692,-0.3104977749961061,0.598413650662064,-0.4852053503766987,-0.3619838367558999,-0.4639325546169564,-0.1731690076375218,-0.1580237499348341,-0.7383374181770063,-0.2734046609851663,-0.1960131708137989,3.3261711672952643,-0.1700475343179241,-0.4466166954522901,-0.1840186845246444,-0.3589389310523966,-1.1354668149080638,1.4487917358041271
6141,0.5135855359243435,-0.3053083468611561,-0.117184991347747,0.5436297516704536,1.0358211226635177,2.547207581803924,-0.7842697157149628,-0.1078030893996845,-0.5762472500554522,-0.4852053503766987,-0.3619838367558999,-0.4639325546169564,-0.1731690076375218,-0.1580237499348341,1.3543943126559297,-0.2734046609851663,-0.1960131708137989,-0.3006459829345367,-0.1700475343179241,-0.4466166954522901,-0.1840186845246444,-0.3589389310523966,0.8806950470683438,-0.6902303314457872
4661,-1.1814874905720298,-0.3053083468611561,-0.117184991347747,-0.4180282484208062,-0.9654176557324816,-0.3925867711542392,0.1709720533981828,0.2233600588986942,-0.1846936164829468,-0.4852053503766987,-0.3619838367558999,-0.4639325546169564,-0.1731690076375218,-0.1580237499348341,-0.7383374181770063,-0.2734046609851663,-0.1960131708137989,3.3261711672952643,-0.1700475343179241,-0.4466166954522901,-0.1840186845246444,-0.3589389310523966,-1.1354668149080638,1.4487917358041271
5

感觉不太符合

再检查一下训练组件配置，目前还是定义了一个随机分割组件

@yushiqie 确实是这个的问题，同时发现需要将 ENABLE_NN 环境变量设置成 true，请问一下在使用kuscia的时候需要在哪哥脚本里设置这个环境变量？

任务的环境变量，可以在AppImage 中设置, 可以按照标准的pod[container 配置] (https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/)

authors: ian-huu oceanqdu yushiqie

repo: secretflow/kuscia