8000 运行simple_pipeline.py 出错 · Issue #145 · RUC-NLPIR/FlashRAG · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

运行simple_pipeline.py 出错 #145

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
Salary-only-17k opened this issue Mar 16, 2025 · 3 comments
Open

运行simple_pipeline.py 出错 #145

Salary-only-17k opened this issue Mar 16, 2025 · 3 comments

Comments

@Salary-only-17k
Copy link
Salary-only-17k commented Mar 16, 2025

环境

pip install torch==2.4.0 torchvision==0.19.0 torchaudio==2.4.0 --index-url https://download.pytorch.org/whl/cu121 torch2.5.1依旧报错
vllm 0.5.5
faiss-cpu使用是的1.8.0
flashrag 使用的是main分支

报错内容

output_dataset = pipeline.run(test_data, do_eval=True)

TypeError Traceback (most recent call last)
Cell In[9], line 1
----> 1 output_dataset = pipeline.run(test_data, do_eval=True)

File /media/cheng/code/00-learn_code/learn_python/flashrag/FlashRAG-main/flashrag/pipeline/pipeline.py:125, in SequentialPipeline.run(self, dataset, do_eval, pred_process_fun)
123 if self.refiner:
124 del self.refiner
--> 125 pred_answer_list = self.generator.generate(input_prompts)
126 dataset.update_output("pred", pred_answer_list)
128 dataset = self.evaluate(dataset, do_eval=do_eval, pred_process_fun=pred_process_fun)

File /media/cheng/code/00-learn_code/learn_python/flashrag/FlashRAG-main/flashrag/generator/generator.py:408, in HFCausalLMGenerator.generate(self, input_list, batch_size, return_scores, return_dict, **params)
400 batched_prompts = input_list[idx : idx + batch_size]
401 inputs = self.tokenizer(
402 batched_prompts,
403 return_tensors="pt",
(...) 406 max_length=self.max_input_len,
407 ).to(self.model.device)
--> 408 outputs = self.model.generate(
409 **inputs,
410 output_scores=True,
411 return_dict_in_generate=True,
412 **generation_params,
413 )
415 generated_ids = outputs.sequences
416 logits = torch.stack(outputs.scores, dim=1).softmax(-1)

File ~/miniconda3/envs/env_flashrag/lib/python3.11/site-packages/torch/utils/_contextlib.py:116, in context_decorator..decorate_context(*args, **kwargs)
113 @functools.wraps(func)
114 def decorate_context(*args, **kwargs):
115 with ctx_factory():
--> 116 return func(*args, **kwargs)

File ~/miniconda3/envs/env_flashrag/lib/python3.11/site-packages/transformers/generation/utils.py:2004, in GenerationMixin.generate(self, inputs, generation_config, logits_processor, stopping_criteria, prefix_allowed_tokens_fn, synced_gpus, assistant_model, streamer, negative_prompt_ids, negative_prompt_attention_mask, **kwargs)
2001 batch_size = inputs_tensor.shape[0]
2003 device = inputs_tensor.device
-> 2004 self._prepare_special_tokens(generation_config, kwargs_has_attention_mask, device=device)
2006 # decoder-only models must use left-padding for batched generation.
2007 if not self.config.is_encoder_decoder and not is_torchdynamo_compiling():
2008 # If input_ids was given, check if the last id in any sequence is pad_token_id
2009 # Note: If using, inputs_embeds this check does not work, because we want to be more hands-off.

File ~/miniconda3/envs/env_flashrag/lib/python3.11/site-packages/transformers/generation/utils.py:1820, in GenerationMixin._prepare_special_tokens(self, generation_config, kwargs_has_attention_mask, device)
1817 return torch.tensor(token, device=device, dtype=torch.long)
1819 bos_token_tensor = _tensor_or_none(generation_config.bos_token_id, device=device)
-> 1820 eos_token_tensor = _tensor_or_none(generation_config.eos_token_id, device=device)
1821 pad_token_tensor = _tensor_or_none(generation_config.pad_token_id, device=device)
1822 decoder_start_token_tensor = _tensor_or_none(generation_config.decoder_start_token_id, device=device)

File ~/miniconda3/envs/env_flashrag/lib/python3.11/site-packages/transformers/generation/utils.py:1817, in GenerationMixin._prepare_special_tokens.._tensor_or_none(token, device)
1815 if isinstance(token, torch.Tensor):
1816 return token.to(device)
-> 1817 return torch.tensor(token, device=device, dtype=torch.long)

TypeError: 'NoneType' object cannot be interpreted as an integer

Image

@ignorejjj
Copy link
Member

在generator.py的400行打印一下batched_prompts以及tokenize后的inputs看看有没有问题。或者把framework换成vllm试试。

@Salary-only-17k
Copy link
Author

好的,谢谢问题解决了。

@diablounbounded
Copy link
5E51

framework怎么改成vllm呀,没有找到地方

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants
0