我的帐户在另一个用户的存储库上具有“协作者”状态。当我从分支上的分支创建(或添加提交)到上游存储库的主分支的 PR 时,操作/工作流程不会运行。我不是该存储库的第一次贡献者。
我的理解是,来自分叉的 PR 在未经批准的情况下不会运行(根据这些文档),但我不清楚由所有者在存储库中添加为“协作者”是否应该跳过批准的需要。此外,默认设置似乎是仅首次贡献者才需要批准。
我确实看到我的分叉中的每次提交都会启动工作流程运行,因此我知道我的工作流程是有效的。我只需要工作流也在上游存储库上运行,以便运行的状态/结果显示在“拉取请求”页面上。
造成这种情况的可能原因有哪些?
作为参考,这里是我希望在每次推送时运行的工作流程的前几行。
name: CI
on: [ push ]
jobs:
... etc ...
Run Code Online (Sandbox Code Playgroud) 我试图实现的总体目标是将 Keras 模型发送给每个 Spark 工作器,以便我可以在应用于 DataFrame 列的 UDF 中使用该模型。为此,Keras 模型需要是可腌制的。
似乎很多人通过猴子修补 Model 类来成功腌制 keras 模型,如下面的链接所示:
http://zachmoshe.com/2017/04/03/pickling-keras-models.html
但是,我还没有看到任何关于如何与 Spark 一起执行此操作的示例。我的第一次尝试只是make_keras_picklable()在驱动程序中运行该函数,这允许我在驱动程序中腌制和取消腌制模型,但我无法在 UDF 中腌制模型。
def make_keras_picklable():
"Source: https://zachmoshe.com/2017/04/03/pickling-keras-models.html"
...
make_keras_picklable()
model = Sequential() # etc etc
def score(case):
....
score = model.predict(case)
...
def scoreUDF = udf(score, ArrayType(FloatType()))
Run Code Online (Sandbox Code Playgroud)
我得到的错误表明在 UDF 中解压模型没有使用猴子修补的模型类。
AttributeError: 'Sequential' object has no attribute '_built'
Run Code Online (Sandbox Code Playgroud)
看起来另一个用户在这篇 SO 帖子中遇到了类似的错误,答案是“make_keras_picklable()也在每个工作人员上运行”。没有给出如何做到这一点的例子。
我的问题是:召集make_keras_picklable()所有工人的适当方式是什么?
我尝试使用broadcast()(见下文)但得到了与上面相同的错误。
def make_keras_picklable():
"Source: https://zachmoshe.com/2017/04/03/pickling-keras-models.html"
...
make_keras_picklable()
spark.sparkContext.broadcast(make_keras_picklable())
model = Sequential() …Run Code Online (Sandbox Code Playgroud)