質問編集履歴
1
クレームです。
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
teratailの投稿削除条件の緩和を希望します。
|
test
CHANGED
@@ -1,155 +1,5 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
8bit量子化とLoRAの有効化を行うとモデル保存時に「配列の形状が合わない」というようなエラーが発生してしまいます。
|
7
|
-
8bit量子化だけの時はモデル読み込み時にレイヤーの読み込みに失敗(?)します。
|
8
|
-
8bit量子化をしないでLoRAだけを有効にするとメモリ不足になってしまいます。8bit量子化とLoRAの有効化を両方とも行ったときに発生するエラーの解消方法と、できれば原因も教えていただきたいです。
|
9
|
-
|
10
|
-
### エラーメッセージ
|
11
|
-
```error
|
12
|
-
# 量子化とLoRA
|
13
|
-
/usr/local/lib/python3.10/site-packages/keras/src/models/model.py:385: UserWarning: Layer InputLayer does not have a `quantize()` method implemented.
|
14
|
-
warnings.warn(str(e))
|
15
|
-
/usr/local/lib/python3.10/site-packages/keras/src/models/model.py:385: UserWarning: Layer RMSNormalization does not have a `quantize()` method implemented.
|
16
|
-
warnings.warn(str(e))
|
17
|
-
/usr/local/lib/python3.10/site-packages/keras/src/models/model.py:385: UserWarning: Layer RotaryEmbedding does not have a `quantize()` method implemented.
|
18
|
-
warnings.warn(str(e))
|
19
|
-
/usr/local/lib/python3.10/site-packages/keras/src/models/model.py:385: UserWarning: Layer Softmax does not have a `quantize()` method implemented.
|
20
|
-
warnings.warn(str(e))
|
21
|
-
/usr/local/lib/python3.10/site-packages/keras/src/models/model.py:385: UserWarning: Layer Dropout does not have a `quantize()` method implemented.
|
22
|
-
warnings.warn(str(e))
|
23
|
-
/usr/local/lib/python3.10/site-packages/keras/src/models/model.py:385: UserWarning: Layer ReversibleEmbedding does not have a `quantize()` method implemented.
|
24
|
-
warnings.warn(str(e))
|
25
|
-
---------------------------------------------------------------------------
|
26
|
-
InvalidArgumentError Traceback (most recent call last)
|
27
|
-
Cell In[3], line 5
|
28
|
-
3 model.quantize("int8")
|
29
|
-
4 model.backbone.enable_lora(rank=16)
|
30
|
-
----> 5 model.save_to_preset("./japanese-gpt-chat")
|
31
|
-
6 model=GemmaCausalLM.from_preset("./japanese-gpt-chat")
|
32
|
-
|
33
|
-
File /usr/local/lib/python3.10/site-packages/keras_nlp/src/models/task.py:329, in Task.save_to_preset(self, preset_dir)
|
34
|
-
326 self.save_task_weights(os.path.join(preset_dir, TASK_WEIGHTS_FILE))
|
35
|
-
328 self.preprocessor.save_to_preset(preset_dir)
|
36
|
-
--> 329 self.backbone.save_to_preset(preset_dir)
|
37
|
-
|
38
|
-
File /usr/local/lib/python3.10/site-packages/keras_nlp/src/models/backbone.py:204, in Backbone.save_to_preset(self, preset_dir)
|
39
|
-
198 """Save backbone to a preset directory.
|
40
|
-
199
|
41
|
-
200 Args:
|
42
|
-
201 preset_dir: The path to the local model preset directory.
|
43
|
-
202 """
|
44
|
-
203 save_serialized_object(self, preset_dir, config_file=CONFIG_FILE)
|
45
|
-
--> 204 self.save_weights(os.path.join(preset_dir, MODEL_WEIGHTS_FILE))
|
46
|
-
205 save_metadata(self, preset_dir)
|
47
|
-
|
48
|
-
File /usr/local/lib/python3.10/site-packages/keras/src/utils/traceback_utils.py:122, in filter_traceback.<locals>.error_handler(*args, **kwargs)
|
49
|
-
119 filtered_tb = _process_traceback_frames(e.__traceback__)
|
50
|
-
120 # To get the full stack trace, call:
|
51
|
-
121 # `keras.config.disable_traceback_filtering()`
|
52
|
-
--> 122 raise e.with_traceback(filtered_tb) from None
|
53
|
-
123 finally:
|
54
|
-
124 del filtered_tb
|
55
|
-
|
56
|
-
File /usr/local/lib/python3.10/site-packages/tensorflow/python/framework/ops.py:5983, in raise_from_not_ok_status(e, name)
|
57
|
-
5981 def raise_from_not_ok_status(e, name) -> NoReturn:
|
58
|
-
5982 e.message += (" name: " + str(name if name is not None else ""))
|
59
|
-
-> 5983 raise core._status_to_exception(e) from None
|
60
|
-
|
61
|
-
InvalidArgumentError: {{function_node __wrapped__RealDiv_device_/job:localhost/replica:0/task:0/device:CPU:0}} Incompatible shapes: [8,2048,256] vs. [1,1,8,256] [Op:RealDiv] name:
|
62
|
-
|
63
|
-
# 量子化のみ
|
64
|
-
/usr/local/lib/python3.10/site-packages/keras/src/models/model.py:385: UserWarning: Layer InputLayer does not have a `quantize()` method implemented.
|
65
|
-
warnings.warn(str(e))
|
66
|
-
/usr/local/lib/python3.10/site-packages/keras/src/models/model.py:385: UserWarning: Layer RMSNormalization does not have a `quantize()` method implemented.
|
67
|
-
warnings.warn(str(e))
|
68
|
-
/usr/local/lib/python3.10/site-packages/keras/src/models/model.py:385: UserWarning: Layer RotaryEmbedding does not have a `quantize()` method implemented.
|
69
|
-
warnings.warn(str(e))
|
70
|
-
/usr/local/lib/python3.10/site-packages/keras/src/models/model.py:385: UserWarning: Layer Softmax does not have a `quantize()` method implemented.
|
71
|
-
warnings.warn(str(e))
|
72
|
-
/usr/local/lib/python3.10/site-packages/keras/src/models/model.py:385: UserWarning: Layer Dropout does not have a `quantize()` method implemented.
|
73
|
-
warnings.warn(str(e))
|
74
|
-
/usr/local/lib/python3.10/site-packages/keras/src/models/model.py:385: UserWarning: Layer ReversibleEmbedding does not have a `quantize()` method implemented.
|
75
|
-
warnings.warn(str(e))
|
76
|
-
---------------------------------------------------------------------------
|
77
|
-
ValueError Traceback (most recent call last)
|
78
|
-
Cell In[3], line 6
|
79
|
-
4 #model.backbone.enable_lora(rank=16)
|
80
|
-
5 model.save_to_preset("./japanese-gpt-chat")
|
81
|
-
----> 6 model=GemmaCausalLM.from_preset("./japanese-gpt-chat")
|
82
|
-
|
83
|
-
File /usr/local/lib/python3.10/site-packages/keras_nlp/src/models/task.py:231, in Task.from_preset(cls, preset, load_weights, **kwargs)
|
84
|
-
229 if check_file_exists(preset, TASK_WEIGHTS_FILE):
|
85
|
-
230 task.load_task_weights(get_file(preset, TASK_WEIGHTS_FILE))
|
86
|
-
--> 231 task.backbone.load_weights(get_file(preset, MODEL_WEIGHTS_FILE))
|
87
|
-
232 task.preprocessor.tokenizer.load_preset_assets(preset)
|
88
|
-
233 return task
|
89
|
-
|
90
|
-
File /usr/local/lib/python3.10/site-packages/keras/src/utils/traceback_utils.py:122, in filter_traceback.<locals>.error_handler(*args, **kwargs)
|
91
|
-
119 filtered_tb = _process_traceback_frames(e.__traceback__)
|
92
|
-
120 # To get the full stack trace, call:
|
93
|
-
121 # `keras.config.disable_traceback_filtering()`
|
94
|
-
--> 122 raise e.with_traceback(filtered_tb) from None
|
95
|
-
123 finally:
|
96
|
-
124 del filtered_tb
|
97
|
-
|
98
|
-
File /usr/local/lib/python3.10/site-packages/keras/src/saving/saving_lib.py:456, in _raise_loading_failure(error_msgs, warn_only)
|
99
|
-
454 warnings.warn(msg)
|
100
|
-
455 else:
|
101
|
-
--> 456 raise ValueError(msg)
|
102
|
-
|
103
|
-
ValueError: A total of 126 objects could not be loaded. Example error message for object <EinsumDense name=key, built=True>:
|
104
|
-
|
105
|
-
Layer 'key' expected 1 variables, but received 2 variables during loading. Expected: ['kernel']
|
106
|
-
|
107
|
-
List of objects that could not be loaded:
|
108
|
-
[<EinsumDense name=key, built=True>, <EinsumDense name=attention_output, built=True>, <EinsumDense name=query, built=True>, <EinsumDense name=value, built=True>, <EinsumDense name=ffw_linear, built=True>, <EinsumDense name=ffw_gating, built=True>, <EinsumDense name=ffw_gating_2, built=True>, <EinsumDense name=ffw_gating_2, built=True>, <EinsumDense name=key, built=True>, <EinsumDense name=attention_output, built=True>, <EinsumDense name=query, built=True>, <EinsumDense name=value, built=True>, <EinsumDense name=ffw_linear, built=True>, <EinsumDense name=ffw_gating_2, built=True>, <EinsumDense name=key, built=True>, <EinsumDense name=attention_output, built=True>, <EinsumDense name=query, built=True>, <EinsumDense name=value, built=True>, <EinsumDense name=ffw_linear, built=True>, <EinsumDense name=ffw_gating, built=True>, <EinsumDense name=ffw_gating_2, built=True>, <EinsumDense name=key, built=True>, <EinsumDense name=attention_output, built=True>, <EinsumDense name=query, built=True>, <EinsumDense name=value, built=True>, <EinsumDense name=ffw_linear, built=True>, <EinsumDense name=ffw_gating, built=True>, <EinsumDense name=ffw_gating_2, built=True>]
|
109
|
-
|
110
|
-
# LoRAのみ
|
111
|
-
ただのメモリ不足のエラー。
|
112
|
-
```
|
113
|
-
|
114
|
-
### 該当のソースコード
|
115
|
-
|
116
|
-
```Python
|
117
|
-
from keras_nlp.models import GemmaCausalLM
|
118
|
-
model=GemmaCausalLM.from_preset("hf://google/gemma-2b")
|
119
|
-
model.quantize("int8")
|
120
|
-
model.backbone.enable_lora(rank=16)
|
121
|
-
model.save_to_preset("./gemma")
|
122
|
-
model=GemmaCausalLM.from_preset("./gemma")
|
123
|
-
```
|
124
|
-
|
125
|
-
### 試したこと・調べたこと
|
126
|
-
- [x] teratailやGoogle等で検索した
|
127
|
-
- [x] ソースコードを自分なりに変更した
|
128
|
-
- [ ] 知人に聞いた
|
129
|
-
- [ ] その他
|
130
|
-
|
131
|
-
##### 上記の詳細・結果
|
132
|
-
teratailは[Tensorflowのエラーの意味。Incompatible shapes。
|
133
|
-
](https://teratail.com/questions/141391)のような、ケアレスミス(?)のようなものしか出てこなかったです。
|
134
|
-
Googleはkeras_nlpでGemmaCausalLMのようなモデルをファインチューニングするというよりは、LLMではないモデルを自分で構築して学習させる時のIncompatible shapesエラーしか出てきませんでした。
|
135
|
-
quantizeメソッドとenable_loraメソッドを使う[githubのページ](https://github.com/keras-team/keras/pull/19356)のqlora.pyを参考にしました。このqlora.pyでは保存するところまでは書いていないです。
|
136
|
-
|
137
|
-
### 補足
|
138
|
-
何となく関係ありようなライブラリのバージョンを載せておきます。
|
139
|
-
Kaggleの仮想環境は2024年7月12日のものです。
|
140
|
-
accelerate 0.32.1
|
141
|
-
huggingface-hub 0.23.4
|
142
|
-
keras 3.4.1
|
143
|
-
keras-nlp 0.14.0
|
144
|
-
libtpu-nightly 0.1.dev20231213
|
145
|
-
numpy 1.26.4
|
146
|
-
optax 0.2.2
|
147
|
-
optree 0.12.1
|
148
|
-
safetensors 0.4.3
|
149
|
-
scipy 1.14.0
|
150
|
-
sympy 1.13.0
|
151
|
-
tensorflow 2.16.1
|
152
|
-
tf_keras 2.16.0
|
153
|
-
tokenizers 0.19.1
|
154
|
-
transformers 4.42.3
|
155
|
-
triton 2.3.0
|
1
|
+
どうしても解決策が分からないエラーが出たからteratailに質問を投稿したのですが、他の質問を見てみたら
|
2
|
+
1. 質問するときにエラー全体を書かない。エラー全体を載せてくれとのコメントには「覚えているところだけ載せました。」と再実行する気なし。
|
3
|
+
2. 回答者がteratailのヘルプページをしつこくコメントする。
|
4
|
+
3. 質問者が日本語出来ないし、本人がそれを自覚していないのでプログラミング専門のヤフー知恵袋みたいになっている。
|
5
|
+
などなど意味不明なので質問を削除して退会したいんですが、調べたらほぼ削除不可のようです。事前に調べなかった私が悪いのですがこのような内容に書き換えれば垢BANのついでに質問消してくれるかもしれないと思ってほんの僅かに期待しています。本当にこのサイトはク○です。
|