Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 在Git Repo和S3中存储NLP模型?_Amazon S3_Machine Learning_Nlp - Fatal编程技术网

Amazon s3 在Git Repo和S3中存储NLP模型?

Amazon s3 在Git Repo和S3中存储NLP模型?,amazon-s3,machine-learning,nlp,Amazon S3,Machine Learning,Nlp,存储NLP模型的最佳方式是什么?我有多个NLP模型,总大小约为800MB。我的代码将在启动时将模型加载到内存中。然而,我想知道什么是最好的方式来存储模型。我应该将其存储在git repo中,然后直接从本地系统加载,还是应该将其存储在像S3这样的外部位置并从那里加载?每种方法的优点/缺点是什么?或者人们使用我没有考虑过的其他方法 您的NLP模型需要版本控制吗?您是否需要恢复到以前的NLP模型?如果不是这样,那么将工件存储在S3存储桶中就足够了。如果您计划长期存储许多NLP模型,我也建议您。冰川是一

存储NLP模型的最佳方式是什么?我有多个NLP模型,总大小约为800MB。我的代码将在启动时将模型加载到内存中。然而,我想知道什么是最好的方式来存储模型。我应该将其存储在git repo中,然后直接从本地系统加载,还是应该将其存储在像S3这样的外部位置并从那里加载?每种方法的优点/缺点是什么?或者人们使用我没有考虑过的其他方法

您的NLP模型需要版本控制吗?您是否需要恢复到以前的NLP模型?如果不是这样,那么将工件存储在S3存储桶中就足够了。如果您计划长期存储许多NLP模型,我也建议您。冰川是一种非常经济的长期储存方式

您的NLP模型需要版本控制吗?您是否需要恢复到以前的NLP模型?如果不是这样,那么将工件存储在S3存储桶中就足够了。如果您计划长期存储许多NLP模型,我也建议您。冰川是一种非常经济的长期储存方式

这是一个很好的问题,但很少有人关注它

以下是我指出的几个因素:

  • (1)存储文件的成本(2)带宽:成本 下载/上传资源(型号等)
  • 延迟下载:运行NLP系统并不需要所有资源。对于终端用户来说,下载许多对其目的几乎没有用处的资源是一件令人头痛的事情。换句话说,当需要时,系统应该下载(理想情况下是自己)用于其目的的任何资源
  • 方便
可供选择的方案有:

  • S3:好处是,如果您让它工作,它会很方便。但问题是,熟悉S3和AmazonAWS的人必须监控系统的故障/付款等,而且通常成本很高。你不仅要为拥有空间付费,更重要的是你还要为带宽付费。如果您有诸如单词嵌入或词典之类的资源(除了您的模型之外),每种资源都需要几GB的带宽,那么不难达到TB的带宽使用率。使用S3,它们的使用有一个标准。他们的系统是“懒惰”的,即你的程序只在需要的时候下载(和缓存)给定的资源

  • 将其保存在repo中:当然,在repo中签入大二进制文件不是一个好主意,除非您使用它将大文件保存在git历史记录之外。即使这样,我也不确定如何对文件进行编程调用。比如,你必须有脚本和指令,让用户手动下载文件等等(这很难看)

我还添加了这两个选项:

  • Maven依赖项:基本上是将所有内容打包到Jar文件中,部署它们并将它们添加为依赖项。我们曾经使用过它,一些ppl仍然使用它(例如,StanfordNLP ppl,他们要求您添加模型作为maven依赖项)。我个人不推荐它,主要是因为maven并不是为处理大型资源而设计的(比如有时它会挂起,等等)。而且这种方法并不懒惰,这意味着maven在编译/运行时一次下载所有内容(例如,当第一次尝试StanfordCoreNLP时,您将不得不下载几GB的文件,而这些文件可能永远都不需要使用,这是一个头痛的问题)。此外,如果您是Java用户,您知道使用类路径是一件非常头痛的事情

  • 您自己的服务器:安装文件管理器服务器(如),将您的文件存储在那里,并在需要时以所需语言向服务器发送编程调用()。这可能对你有用。这给了你懒惰的行为(比如S3),同时又不昂贵(不像S3)(基本上你会得到S3的所有好处)


总结一下我的观点:我过去曾尝试过S3,它非常方便,但很昂贵。因为我们有一个经常空闲的服务器,所以我们使用Minio,我们对此感到高兴。如果你有一个可靠的远程服务器来存储你的文件,我会选择这个选项

这是一个很好的问题,但很少有人关注它

以下是我指出的几个因素:

  • (1)存储文件的成本(2)带宽:成本 下载/上传资源(型号等)
  • 延迟下载:运行NLP系统并不需要所有资源。对于终端用户来说,下载许多对其目的几乎没有用处的资源是一件令人头痛的事情。换句话说,当需要时,系统应该下载(理想情况下是自己)用于其目的的任何资源
  • 方便
可供选择的方案有:

  • S3:好处是,如果您让它工作,它会很方便。但问题是,熟悉S3和AmazonAWS的人必须监控系统的故障/付款等,而且通常成本很高。你不仅要为拥有空间付费,更重要的是你还要为带宽付费。如果您有诸如单词嵌入或词典之类的资源(除了您的模型之外),每种资源都需要几GB的带宽,那么不难达到TB的带宽使用率。使用S3,它们的使用有一个标准。他们的系统是“懒惰”的,即你的程序只在需要的时候下载(和缓存)给定的资源

  • 将其保存在repo中:当然,在repo中签入大二进制文件不是一个好主意,除非您使用它将大文件保存在git历史记录之外。即使这样,我也不确定如何对文件进行编程调用。比如,你必须有脚本和指令,让用户手动下载文件等等(这很难看)

我还添加了这两个选项: