【问题标题】:AWS Lambda Boto gensim model module initialization error: __exit__AWS Lambda Boto gensim 模型模块初始化错误:__exit__
【发布时间】:2019-10-01 09:53:47
【问题描述】:

在 AWS lambda 上使用 gensim 托管 word2vec 模型

使用 python 2.7 boto==2.48.0 gensim==3.4.0

我的 function.py 文件中有几行,我直接从 s3 加载模型

print('################### connecting to s3...')
s3_conn = boto.s3.connect_to_region(
        region,
        aws_access_key_id = Aws_access_key_id,
        aws_secret_access_key = Aws_secret_access_key,
        is_secure = True,
        calling_format = OrdinaryCallingFormat()
        )
print('################### connected to s3...')
bucket = s3_conn.get_bucket(S3_BUCKET)
print('################### got bucket...')
key = bucket.get_key(S3_KEY)
print('################### got key...')
model =  KeyedVectors.load_word2vec_format(key, binary=True)
print('################### loaded model...')

在模型加载线上

    model =  KeyedVectors.load_word2vec_format(key, binary=True)

得到一个没有太多细节的神秘错误:

在云端手表上可以看到我所有的打印消息,直到 '################### got key...' 包含在内, 然后我得到:

START RequestId: {req_id} Version: $LATEST 

然后就在它之后[这两条消息之间没有时间延迟]

module initialization error: __exit__ 

请问,有没有办法获得详细的错误或更多信息?

更多背景细节: 我能够将模型从 s3 下载到 /tmp/,它确实授权并检索了模型文件,但空间不足 [文件约为 2GB,/tmp/ 为 512MB]

所以,改用上面的 gensim 直接加载模型,现在得到了那个神秘的错误。

使用 python-lambda-local 运行函数没有问题

所以,这可能将其缩小到 gensim 的 smart open 或 aws lambda 的问题,不胜感激任何提示,谢谢!

【问题讨论】:

    标签: python amazon-web-services aws-lambda gensim word2vec


    【解决方案1】:

    而不是使用 boto 连接, 简单地说:

    model = KeyedVectors.load_word2vec_format('s3://{}:{}@{}/{}'.format(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, S3_BUCKET, S3_KEY), binary=True)
    

    成功了!

    当然,不幸的是,它没有回答为什么会出现神秘的 exit 错误以及如何获取更多信息的问题:/

    【讨论】:

      猜你喜欢
      • 2017-06-18
      • 1970-01-01
      • 1970-01-01
      • 2021-10-26
      • 2018-02-13
      • 2018-10-09
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多