【发布时间】:2020-05-18 08:26:02
【问题描述】:
我有一个 python 脚本,我正在构建一个 doc2vec 模型并将其保存到具有不同版本名称的 s3。
参考截图
现在我的数据库中的数据每周更新一次,我需要重新构建包含新数据的 doc2vec 模型。
为此,我在 AWS lambda 中安排了一个脚本每周运行一次 python 脚本。
现在我想将模型保存到 s3 中,model_name 本周以“model_d2v_version_008”开头,下周以“model_d2v_version_009”开头,以此类推。
我曾经在自动化流程之前提供模型名称
def d2v_doc(titles_df):
tagged_data = [TaggedDocument(words=_d, tags=[str(titles_df['id_titles'][i])]) for i, _d in enumerate(titles_df['doc'])]
model_d2v = Doc2Vec(vector_size=300,min_count=10, dm=1)
model_d2v.build_vocab(tagged_data)
model_d2v.train(tagged_data,epochs=100,total_examples=model_d2v.corpus_count)
return model_d2v
def save_d2v_to_s3(model,fname):
model_name = fname
joblib.dump(model,model_name)
s3_base_path='s3://sd-flikku/datalake/doc2vec_model'
path = s3_base_path+'/'+model_name
command = "aws s3 cp {} {}".format(model_name,path).split()
print('saving...'+model_name)
subprocess.call(command)
model_doc = d2v_doc(titles_df)
save_d2v_to_s3(model_doc,"model_d2v_version_007")
现在,由于流程是自动化的,我希望 model_names 保持相同的格式并每周增加版本计数。我该怎么做?
【问题讨论】:
-
您是否有特别需要递增数字的特殊原因?这个数字有什么重要的意义吗?如果没有,我建议生成一个唯一名称 (UUID),或者可能只是基于日期(这具有在名称中传达一些信息的额外好处)。这两个选项都将避免名称冲突,并且您不需要数据库来跟踪最近使用的号码。
-
@JohnRotenstein 使用版本号是有原因的。可以肯定的是,命名约定很容易理解,另一件事是我可以跟踪我的模型的性能,然后我可以选择具有高精度的最佳模型。
-
我建议在名称中使用
YYYYMMDD日期格式。它们也将进行排序,并将提供有关它们何时创建的概念。比+1号码更有意义。
标签: python-3.x amazon-web-services amazon-s3 doc2vec