Using distributed or parallel set-up in script?: No
Who can help?
No response
Information
[ ] The official example scripts
[X] My own modified scripts
Tasks
[ ] An officially supported task in the examples folder (such as GLUE/SQuAD, ...)
[ ] My own task or dataset (give details below)
Reproduction
I Ran The Official Code Example:
from transformers import AutoTokenizer, AutoModelForCausalLM, GenerationConfig
import torch
model_id = "RWKV/rwkv-raven-1b5"
model = AutoModelForCausalLM.from_pretrained(model_id)
tokenizer = AutoTokenizer.from_pretrained(model_id)
model.eval()
if torch.__version__ >= "2":
torch.compile(model)
generation_config = GenerationConfig(max_new_tokens=1000, temperature=0.7, top_k=35, top_p=0.90, pad_token_id= tokenizer.eos_token_id)
question = "Write me a Poem About NLP"
prompt = f"### Instruction: {question}\n### Response:"
inputs = tokenizer(prompt, return_tensors="pt")
output = model.generate((inputs["input_ids"]), generation_config=generation_config)
print(output)
It Works Fine!
I Ran the same code with some additional args in from_pretrained() func when initialising the model:
from transformers import AutoTokenizer, AutoModelForCausalLM, GenerationConfig
import torch
model_id = "RWKV/rwkv-raven-1b5"
model = AutoModelForCausalLM.from_pretrained(model_id, low_cpu_mem_usage=True, load_in_8bit=True, device_map="auto")
tokenizer = AutoTokenizer.from_pretrained(model_id)
model.eval()
if torch.__version__ >= "2":
torch.compile(model)
generation_config = GenerationConfig(max_new_tokens=1000, temperature=0.7, top_k=35, top_p=0.90, pad_token_id= tokenizer.eos_token_id)
question = "Tell me How RWKV RNNs are Parallelizable"
prompt = f"### Instruction: {question}\n### Response:"
inputs = tokenizer(prompt, return_tensors="pt")
output = model.generate((inputs["input_ids"]), generation_config=generation_config)
print(output)
But When I Ran This Code, I Got The Following Error:
/usr/local/lib/python3.10/dist-packages/transformers/generation/utils.py:1448: UserWarning: You are calling .generate() with the `input_ids` being on a device type different than your model's device. `input_ids` is on cpu, whereas the model is on cuda. You may experience unexpected behaviors or slower generation. Please make sure that you have put `input_ids` to the correct device by calling for example input_ids = input_ids.to('cuda') before running `.generate()`.
warnings.warn(
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ Traceback (most recent call last) โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ in <cell line: 7>:7 โ
โ โ
โ /usr/local/lib/python3.10/dist-packages/torch/utils/_contextlib.py:115 in decorate_context โ
โ โ
โ 112 โ @functools.wraps(func) โ
โ 113 โ def decorate_context(*args, **kwargs): โ
โ 114 โ โ with ctx_factory(): โ
โ โฑ 115 โ โ โ return func(*args, **kwargs) โ
โ 116 โ โ
โ 117 โ return decorate_context โ
โ 118 โ
โ โ
โ /usr/local/lib/python3.10/dist-packages/transformers/generation/utils.py:1518 in generate โ
โ โ
โ 1515 โ โ โ โ ) โ
โ 1516 โ โ โ โ
โ 1517 โ โ โ # 11. run greedy search โ
โ โฑ 1518 โ โ โ return self.greedy_search( โ
โ 1519 โ โ โ โ input_ids, โ
โ 1520 โ โ โ โ logits_processor=logits_processor, โ
โ 1521 โ โ โ โ stopping_criteria=stopping_criteria, โ
โ โ
โ /usr/local/lib/python3.10/dist-packages/transformers/generation/utils.py:2335 in greedy_search โ
โ โ
โ 2332 โ โ โ model_inputs = self.prepare_inputs_for_generation(input_ids, **model_kwargs) โ
โ 2333 โ โ โ โ
โ 2334 โ โ โ # forward pass to get next token โ
โ โฑ 2335 โ โ โ outputs = self( โ
โ 2336 โ โ โ โ **model_inputs, โ
โ 2337 โ โ โ โ return_dict=True, โ
โ 2338 โ โ โ โ output_attentions=output_attentions, โ
โ โ
โ /usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py:1501 in _call_impl โ
โ โ
โ 1498 โ โ if not (self._backward_hooks or self._backward_pre_hooks or self._forward_hooks โ
โ 1499 โ โ โ โ or _global_backward_pre_hooks or _global_backward_hooks โ
โ 1500 โ โ โ โ or _global_forward_hooks or _global_forward_pre_hooks): โ
โ โฑ 1501 โ โ โ return forward_call(*args, **kwargs) โ
โ 1502 โ โ # Do not call functions when jit is used โ
โ 1503 โ โ full_backward_hooks, non_full_backward_hooks = [], [] โ
โ 1504 โ โ backward_pre_hooks = [] โ
โ โ
โ /usr/local/lib/python3.10/dist-packages/accelerate/hooks.py:165 in new_forward โ
โ โ
โ 162 โ โ โ with torch.no_grad(): โ
โ 163 โ โ โ โ output = old_forward(*args, **kwargs) โ
โ 164 โ โ else: โ
โ โฑ 165 โ โ โ output = old_forward(*args, **kwargs) โ
โ 166 โ โ return module._hf_hook.post_forward(module, output) โ
โ 167 โ โ
โ 168 โ module.forward = new_forward โ
โ โ
โ /usr/local/lib/python3.10/dist-packages/transformers/models/rwkv/modeling_rwkv.py:780 in forward โ
โ โ
โ 777 โ โ """ โ
โ 778 โ โ return_dict = return_dict if return_dict is not None else self.config.use_return โ
โ 779 โ โ โ
โ โฑ 780 โ โ rwkv_outputs = self.rwkv( โ
โ 781 โ โ โ input_ids, โ
โ 782 โ โ โ inputs_embeds=inputs_embeds, โ
โ 783 โ โ โ state=state, โ
โ โ
โ /usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py:1501 in _call_impl โ
โ โ
โ 1498 โ โ if not (self._backward_hooks or self._backward_pre_hooks or self._forward_hooks โ
โ 1499 โ โ โ โ or _global_backward_pre_hooks or _global_backward_hooks โ
โ 1500 โ โ โ โ or _global_forward_hooks or _global_forward_pre_hooks): โ
โ โฑ 1501 โ โ โ return forward_call(*args, **kwargs) โ
โ 1502 โ โ # Do not call functions when jit is used โ
โ 1503 โ โ full_backward_hooks, non_full_backward_hooks = [], [] โ
โ 1504 โ โ backward_pre_hooks = [] โ
โ โ
โ /usr/local/lib/python3.10/dist-packages/accelerate/hooks.py:165 in new_forward โ
โ โ
โ 162 โ โ โ with torch.no_grad(): โ
โ 163 โ โ โ โ output = old_forward(*args, **kwargs) โ
โ 164 โ โ else: โ
โ โฑ 165 โ โ โ output = old_forward(*args, **kwargs) โ
โ 166 โ โ return module._hf_hook.post_forward(module, output) โ
โ 167 โ โ
โ 168 โ module.forward = new_forward โ
โ โ
โ /usr/local/lib/python3.10/dist-packages/transformers/models/rwkv/modeling_rwkv.py:645 in forward โ
โ โ
โ 642 โ โ return_dict = return_dict if return_dict is not None else self.config.use_return โ
โ 643 โ โ โ
โ 644 โ โ if self.training == self.layers_are_rescaled: โ
โ โฑ 645 โ โ โ self._rescale_layers() โ
โ 646 โ โ โ
โ 647 โ โ if input_ids is not None and inputs_embeds is not None: โ
โ 648 โ โ โ raise ValueError("You cannot specify both input_ids and inputs_embeds at the โ
โ โ
โ /usr/local/lib/python3.10/dist-packages/transformers/models/rwkv/modeling_rwkv.py:712 in โ
โ _rescale_layers โ
โ โ
โ 709 โ โ โ โ โ โ block.attention.output.weight.mul_(2 ** int(block_id // self.con โ
โ 710 โ โ โ โ โ โ block.feed_forward.value.weight.mul_(2 ** int(block_id // self.c โ
โ 711 โ โ โ โ โ else: โ
โ โฑ 712 โ โ โ โ โ โ block.attention.output.weight.div_(2 ** int(block_id // self.con โ
โ 713 โ โ โ โ โ โ block.feed_forward.value.weight.div_(2 ** int(block_id // self.c โ
โ 714 โ โ โ
โ 715 โ โ self.layers_are_rescaled = not self.training โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
RuntimeError: result type Float can't be cast to the desired output type Char
I Tried So Many Ways to Address This, But Nothing Works.
But When I Run This Model Initializing code:
model = AutoModelForCausalLM.from_pretrained(model_id)
...without loading it in 8bits, and other args. it Works Fine.
So i guess There Should be Bug in rwkv modelling Code Which Prevents Generating Output, when loaded in 8bit and with some args(You Can See it in Above code snippets).
Correct Me If I were Wrong or Please fix it ASAP.
Who Can Help?
@ArthurZucker @gante @sgugger
Expected behavior
I Expected it Generate Text as it Generate Before!
System Info
My System Info:
transformers
version: 4.30.0.dev0Who can help?
No response
Information
Tasks
examples
folder (such as GLUE/SQuAD, ...)Reproduction
I Ran The Official Code Example:
It Works Fine!
I Ran the same code with some additional args in from_pretrained() func when initialising the model:
But When I Ran This Code, I Got The Following Error:
I Tried So Many Ways to Address This, But Nothing Works.
But When I Run This Model Initializing code:
model = AutoModelForCausalLM.from_pretrained(model_id)
...without loading it in 8bits, and other args. it Works Fine.So i guess There Should be Bug in rwkv modelling Code Which Prevents Generating Output, when loaded in 8bit and with some args(You Can See it in Above code snippets).
Correct Me If I were Wrong or Please fix it ASAP.
Who Can Help? @ArthurZucker @gante @sgugger
Expected behavior
I Expected it Generate Text as it Generate Before!