Python 拥抱脸变形金刚不寻常的记忆使用

Python 拥抱脸变形金刚不寻常的记忆使用,python,pytorch,huggingface-transformers,Python,Pytorch,Huggingface Transformers,我有以下代码试图使用XL transformers对文本进行矢量化: text = "Some string about 5000 characters long" tokenizer = TransfoXLTokenizerFast.from_pretrained('transfo-xl-wt103', cache_dir=my_local_dir, local_files_only=True) model = TransfoXLModel.from_pret

我有以下代码试图使用XL transformers对文本进行矢量化:

  text = "Some string about 5000 characters long"

  tokenizer = TransfoXLTokenizerFast.from_pretrained('transfo-xl-wt103', cache_dir=my_local_dir, local_files_only=True)
  model = TransfoXLModel.from_pretrained("transfo-xl-wt103", cache_dir=my_local_dir, local_files_only=True)

  encoded_input = tokenizer(text, return_tensors='pt') 
  output = model(**encoded_input)
这将产生:

    output = model(**encoded_input)
  File "/home/user/w/default/lib/python3.7/site-packages/torch/nn/modules/module.py", line 550, in __call__
    result = self.forward(*input, **kwargs)
  File "/home/user/w/default/lib/python3.7/site-packages/transformers/modeling_transfo_xl.py", line 863, in forward
    output_attentions=output_attentions,
  File "/home/user/w/default/lib/python3.7/site-packages/torch/nn/modules/module.py", line 550, in __call__
    result = self.forward(*input, **kwargs)
  File "/home/user/w/default/lib/python3.7/site-packages/transformers/modeling_transfo_xl.py", line 385, in forward
    dec_inp, r, attn_mask=dec_attn_mask, mems=mems, head_mask=head_mask, output_attentions=output_attentions,
  File "/home/user/w/default/lib/python3.7/site-packages/torch/nn/modules/module.py", line 550, in __call__
    result = self.forward(*input, **kwargs)
  File "/home/user/w//default/lib/python3.7/site-packages/transformers/modeling_transfo_xl.py", line 338, in forward
    attn_score = attn_score.float().masked_fill(attn_mask[:, :, :, None], -1e30).type_as(attn_score)
RuntimeError: [enforce fail at CPUAllocator.cpp:64] . DefaultCPUAllocator: can't allocate memory: you tried to allocate 2007869696 bytes. Error code 12 (Cannot allocate memory)
我有点困惑,因为这是要求20078696,这是只有2GB,这台机器有64G的内存。所以我俩都不明白为什么它要这个,更不明白为什么它没能得到


我在哪里可以更改控制该进程的设置,并允许该进程使用更多RAM?这是对示例代码的一个很小的调用,我只看到很少有地方会接受这个参数。

您确定使用的是gpu而不是cpu吗

尝试使用
CUDA\u LAUNCH\u BLOCKING=1 python script.py运行python脚本。这将生成正确的python堆栈跟踪(因为CUDA调用是异步的)

您还可以使用
export-CUDA\u-VISIBLE\u-DEVICES=device\u-number
设置
CUDA\u-VISIBLE\u-DEVICES


pytorch github上还有一个仍然打开的窗口,请尝试查看。

即使使用CPU,这也是令人惊讶的,对吗?64Gb内存的2Gb分配并不多。是的,当然,事实上这可能是一个pytorch错误。我只是想说,你有没有尝试过减少字符串
文本的长度
?Pytorch使用64字节的对齐方式进行分配,也许这可以提供一个线索-检查这是否有帮助:谢谢,@Aroo。我当然使用64位系统。在那个链接中我还遗漏了什么吗?