Skip to content
GitLab
Explore
Projects
Groups
Topics
Snippets
Projects
Groups
Topics
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
proekt
obuch
Commits
803e8126
Commit
803e8126
authored
1 week ago
by
Мазур Грета Евгеньевна
Browse files
Options
Download
Patches
Plain Diff
micro zapusk no cross
parent
ae43c80d
master
No related merge requests found
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
.ipynb_checkpoints/checkLora-checkpoint.py
+18
-8
.ipynb_checkpoints/checkLora-checkpoint.py
.ipynb_checkpoints/micro_no_cross-checkpoint.py
+9
-6
.ipynb_checkpoints/micro_no_cross-checkpoint.py
checkLora.py
+18
-8
checkLora.py
micro_no_cross.py
+9
-6
micro_no_cross.py
with
54 additions
and
28 deletions
+54
-28
.ipynb_checkpoints/checkLora-checkpoint.py
+
18
−
8
View file @
803e8126
...
@@ -293,19 +293,29 @@
...
@@ -293,19 +293,29 @@
from
transformers
import
BertTokenizer
,
BertForSequenceClassification
from
transformers
import
BertTokenizer
,
BertForSequenceClassification
from
peft
import
PeftModel
from
peft
import
PeftModel
import
torch
import
torch
from
micro_no_cross
import
MultiTaskBert
# Пути к сохранённой модели
# Пути к сохранённой модели
BASE_MODEL_PATH
=
"./micro_no_cross_fine_tuned/base"
# BASE_MODEL_PATH = "./micro_no_cross_fine_tuned/base"
LORA_PATH
=
"./micro_no_cross_fine_tuned/lora"
# LORA_PATH = "./micro_no_cross_fine_tuned/lora"
BASE_MODEL_PATH
=
"./micro_no_cross_fine_tuned/base2"
LORA_PATH
=
"./micro_no_cross_fine_tuned/lora2"
# Загружаем токенизатор
# Загружаем токенизатор
tokenizer
=
BertTokenizer
.
from_pretrained
(
"./micro_no_cross_fine_tuned"
)
tokenizer
=
BertTokenizer
.
from_pretrained
(
"./micro_no_cross_fine_tuned2"
)
# # Загружаем базовую модель
# base_model = BertForSequenceClassification.from_pretrained(BASE_MODEL_PATH)
# # Загружаем LoRA-адаптацию
# model = PeftModel.from_pretrained(base_model, LORA_PATH)
# Загружаем базовую модель
base_model
=
MultiTaskBert
.
from_pretrained
(
'bert-base-uncased'
).
to
(
device
)
base_model
=
BertForSequenceClassification
.
from_pretrained
(
BASE_MODEL_PATH
)
# Загружаем LoRA-адаптацию
model
=
PeftModel
.
from_pretrained
(
base_model
,
"./micro_no_cross_fine_tuned/lora2"
,
strict
=
False
)
model
=
PeftModel
.
from_pretrained
(
base_model
,
LORA_PATH
)
# Переводим модель в режим оценки
# Переводим модель в режим оценки
model
.
eval
()
model
.
eval
()
...
...
This diff is collapsed.
Click to expand it.
.ipynb_checkpoints/micro_no_cross-checkpoint.py
+
9
−
6
View file @
803e8126
...
@@ -18,14 +18,14 @@ torch.cuda.empty_cache()
...
@@ -18,14 +18,14 @@ torch.cuda.empty_cache()
device
=
torch
.
device
(
"cuda"
if
torch
.
cuda
.
is_available
()
else
"cpu"
)
device
=
torch
.
device
(
"cuda"
if
torch
.
cuda
.
is_available
()
else
"cpu"
)
# Пути для сохранения токенизированных данных
# Пути для сохранения токенизированных данных
TOKENIZED_DATA_DIR
=
"./tokenized_data_micro"
TOKENIZED_DATA_DIR
=
"./tokenized_data_micro
2
"
TRAIN_TOKENIZED_PATH
=
os
.
path
.
join
(
TOKENIZED_DATA_DIR
,
"train"
)
TRAIN_TOKENIZED_PATH
=
os
.
path
.
join
(
TOKENIZED_DATA_DIR
,
"train"
)
VAL_TOKENIZED_PATH
=
os
.
path
.
join
(
TOKENIZED_DATA_DIR
,
"val"
)
VAL_TOKENIZED_PATH
=
os
.
path
.
join
(
TOKENIZED_DATA_DIR
,
"val"
)
TEST_TOKENIZED_PATH
=
os
.
path
.
join
(
TOKENIZED_DATA_DIR
,
"test"
)
TEST_TOKENIZED_PATH
=
os
.
path
.
join
(
TOKENIZED_DATA_DIR
,
"test"
)
# Загрузка данных
# Загрузка данных
data
=
pd
.
read_csv
(
'all_dataset.csv'
)
data
=
pd
.
read_csv
(
'all_dataset.csv'
)
data
=
data
.
sample
(
frac
=
0.
1
,
random_state
=
42
).
copy
()
# Берем 10% случайных данных
data
=
data
.
sample
(
frac
=
0.
05
,
random_state
=
42
).
copy
()
# Берем 10% случайных данных
...
@@ -103,7 +103,7 @@ class MultiTaskBert(BertPreTrainedModel):
...
@@ -103,7 +103,7 @@ class MultiTaskBert(BertPreTrainedModel):
# Создание модели
# Создание модели
base_model
=
MultiTaskBert
.
from_pretrained
(
'bert-base-uncased'
).
to
(
device
)
base_model
=
MultiTaskBert
.
from_pretrained
(
'bert-base-uncased'
).
to
(
device
)
base_model
.
save_pretrained
(
'./micro_no_cross_fine_tuned/base'
)
# Сохраняет модель и её веса
base_model
.
save_pretrained
(
'./micro_no_cross_fine_tuned/base
2
'
)
# Сохраняет модель и её веса
# Настройка LoRA.
# Настройка LoRA.
# Явно исключаем сохранение модулей, не адаптированных LoRA (например, классификаторов),
# Явно исключаем сохранение модулей, не адаптированных LoRA (например, классификаторов),
...
@@ -114,7 +114,9 @@ lora_config = LoraConfig(
...
@@ -114,7 +114,9 @@ lora_config = LoraConfig(
lora_alpha
=
32
,
lora_alpha
=
32
,
lora_dropout
=
0.1
,
lora_dropout
=
0.1
,
target_modules
=
[
"query"
,
"value"
],
target_modules
=
[
"query"
,
"value"
],
modules_to_save
=
[
"classifier"
]
# Не сохраняем дополнительные модули (classifier и т.д.)
# modules_to_save=["classifier"] # Не сохраняем дополнительные модули (classifier и т.д.)
modules_to_save
=
[
"classifier_safety"
,
"classifier_attack"
]
# Явно указываем оба классификатора
)
)
)
model
=
get_peft_model
(
base_model
,
lora_config
)
model
=
get_peft_model
(
base_model
,
lora_config
)
...
@@ -181,9 +183,9 @@ plt.show()
...
@@ -181,9 +183,9 @@ plt.show()
# tokenizer.save_pretrained('./fine-tuned-bert-lora_new')
# tokenizer.save_pretrained('./fine-tuned-bert-lora_new')
# Сохранение модели, адаптеров LoRA и токенизатора
# Сохранение модели, адаптеров LoRA и токенизатора
# base_model.save_pretrained('./micro_no_cross_fine_tuned/base') # Сохраняет модель и её веса
# base_model.save_pretrained('./micro_no_cross_fine_tuned/base') # Сохраняет модель и её веса
tokenizer
.
save_pretrained
(
'./micro_no_cross_fine_tuned'
)
# Сохраняет токенизатор
tokenizer
.
save_pretrained
(
'./micro_no_cross_fine_tuned
2
'
)
# Сохраняет токенизатор
# model.save_pretrained("./micro_no_cross_fine_tuned")
# model.save_pretrained("./micro_no_cross_fine_tuned")
model
.
save_pretrained
(
"./micro_no_cross_fine_tuned/lora"
)
model
.
save_pretrained
(
"./micro_no_cross_fine_tuned/lora
2
"
)
# model.save_adapter('./micro_no_cross_fine_tuned') # Сохраняет адаптеры LoRA
# model.save_adapter('./micro_no_cross_fine_tuned') # Сохраняет адаптеры LoRA
print
(
"Все сохранено"
)
print
(
"Все сохранено"
)
...
@@ -193,6 +195,7 @@ print("Все сохранено")
...
@@ -193,6 +195,7 @@ print("Все сохранено")
def
predict
(
text
):
def
predict
(
text
):
# Токенизация (убедимся, что не передаем labels)
# Токенизация (убедимся, что не передаем labels)
model
.
eval
()
inputs
=
tokenizer
(
inputs
=
tokenizer
(
text
,
text
,
return_tensors
=
"pt"
,
return_tensors
=
"pt"
,
...
...
This diff is collapsed.
Click to expand it.
checkLora.py
+
18
−
8
View file @
803e8126
...
@@ -293,19 +293,29 @@
...
@@ -293,19 +293,29 @@
from
transformers
import
BertTokenizer
,
BertForSequenceClassification
from
transformers
import
BertTokenizer
,
BertForSequenceClassification
from
peft
import
PeftModel
from
peft
import
PeftModel
import
torch
import
torch
from
micro_no_cross
import
MultiTaskBert
# Пути к сохранённой модели
# Пути к сохранённой модели
BASE_MODEL_PATH
=
"./micro_no_cross_fine_tuned/base"
# BASE_MODEL_PATH = "./micro_no_cross_fine_tuned/base"
LORA_PATH
=
"./micro_no_cross_fine_tuned/lora"
# LORA_PATH = "./micro_no_cross_fine_tuned/lora"
BASE_MODEL_PATH
=
"./micro_no_cross_fine_tuned/base2"
LORA_PATH
=
"./micro_no_cross_fine_tuned/lora2"
# Загружаем токенизатор
# Загружаем токенизатор
tokenizer
=
BertTokenizer
.
from_pretrained
(
"./micro_no_cross_fine_tuned"
)
tokenizer
=
BertTokenizer
.
from_pretrained
(
"./micro_no_cross_fine_tuned2"
)
# # Загружаем базовую модель
# base_model = BertForSequenceClassification.from_pretrained(BASE_MODEL_PATH)
# # Загружаем LoRA-адаптацию
# model = PeftModel.from_pretrained(base_model, LORA_PATH)
# Загружаем базовую модель
base_model
=
MultiTaskBert
.
from_pretrained
(
'bert-base-uncased'
).
to
(
device
)
base_model
=
BertForSequenceClassification
.
from_pretrained
(
BASE_MODEL_PATH
)
# Загружаем LoRA-адаптацию
model
=
PeftModel
.
from_pretrained
(
base_model
,
"./micro_no_cross_fine_tuned/lora2"
,
strict
=
False
)
model
=
PeftModel
.
from_pretrained
(
base_model
,
LORA_PATH
)
# Переводим модель в режим оценки
# Переводим модель в режим оценки
model
.
eval
()
model
.
eval
()
...
...
This diff is collapsed.
Click to expand it.
micro_no_cross.py
+
9
−
6
View file @
803e8126
...
@@ -18,14 +18,14 @@ torch.cuda.empty_cache()
...
@@ -18,14 +18,14 @@ torch.cuda.empty_cache()
device
=
torch
.
device
(
"cuda"
if
torch
.
cuda
.
is_available
()
else
"cpu"
)
device
=
torch
.
device
(
"cuda"
if
torch
.
cuda
.
is_available
()
else
"cpu"
)
# Пути для сохранения токенизированных данных
# Пути для сохранения токенизированных данных
TOKENIZED_DATA_DIR
=
"./tokenized_data_micro"
TOKENIZED_DATA_DIR
=
"./tokenized_data_micro
2
"
TRAIN_TOKENIZED_PATH
=
os
.
path
.
join
(
TOKENIZED_DATA_DIR
,
"train"
)
TRAIN_TOKENIZED_PATH
=
os
.
path
.
join
(
TOKENIZED_DATA_DIR
,
"train"
)
VAL_TOKENIZED_PATH
=
os
.
path
.
join
(
TOKENIZED_DATA_DIR
,
"val"
)
VAL_TOKENIZED_PATH
=
os
.
path
.
join
(
TOKENIZED_DATA_DIR
,
"val"
)
TEST_TOKENIZED_PATH
=
os
.
path
.
join
(
TOKENIZED_DATA_DIR
,
"test"
)
TEST_TOKENIZED_PATH
=
os
.
path
.
join
(
TOKENIZED_DATA_DIR
,
"test"
)
# Загрузка данных
# Загрузка данных
data
=
pd
.
read_csv
(
'all_dataset.csv'
)
data
=
pd
.
read_csv
(
'all_dataset.csv'
)
data
=
data
.
sample
(
frac
=
0.
1
,
random_state
=
42
).
copy
()
# Берем 10% случайных данных
data
=
data
.
sample
(
frac
=
0.
05
,
random_state
=
42
).
copy
()
# Берем 10% случайных данных
...
@@ -103,7 +103,7 @@ class MultiTaskBert(BertPreTrainedModel):
...
@@ -103,7 +103,7 @@ class MultiTaskBert(BertPreTrainedModel):
# Создание модели
# Создание модели
base_model
=
MultiTaskBert
.
from_pretrained
(
'bert-base-uncased'
).
to
(
device
)
base_model
=
MultiTaskBert
.
from_pretrained
(
'bert-base-uncased'
).
to
(
device
)
base_model
.
save_pretrained
(
'./micro_no_cross_fine_tuned/base'
)
# Сохраняет модель и её веса
base_model
.
save_pretrained
(
'./micro_no_cross_fine_tuned/base
2
'
)
# Сохраняет модель и её веса
# Настройка LoRA.
# Настройка LoRA.
# Явно исключаем сохранение модулей, не адаптированных LoRA (например, классификаторов),
# Явно исключаем сохранение модулей, не адаптированных LoRA (например, классификаторов),
...
@@ -114,7 +114,9 @@ lora_config = LoraConfig(
...
@@ -114,7 +114,9 @@ lora_config = LoraConfig(
lora_alpha
=
32
,
lora_alpha
=
32
,
lora_dropout
=
0.1
,
lora_dropout
=
0.1
,
target_modules
=
[
"query"
,
"value"
],
target_modules
=
[
"query"
,
"value"
],
modules_to_save
=
[
"classifier"
]
# Не сохраняем дополнительные модули (classifier и т.д.)
# modules_to_save=["classifier"] # Не сохраняем дополнительные модули (classifier и т.д.)
modules_to_save
=
[
"classifier_safety"
,
"classifier_attack"
]
# Явно указываем оба классификатора
)
)
)
model
=
get_peft_model
(
base_model
,
lora_config
)
model
=
get_peft_model
(
base_model
,
lora_config
)
...
@@ -181,9 +183,9 @@ plt.show()
...
@@ -181,9 +183,9 @@ plt.show()
# tokenizer.save_pretrained('./fine-tuned-bert-lora_new')
# tokenizer.save_pretrained('./fine-tuned-bert-lora_new')
# Сохранение модели, адаптеров LoRA и токенизатора
# Сохранение модели, адаптеров LoRA и токенизатора
# base_model.save_pretrained('./micro_no_cross_fine_tuned/base') # Сохраняет модель и её веса
# base_model.save_pretrained('./micro_no_cross_fine_tuned/base') # Сохраняет модель и её веса
tokenizer
.
save_pretrained
(
'./micro_no_cross_fine_tuned'
)
# Сохраняет токенизатор
tokenizer
.
save_pretrained
(
'./micro_no_cross_fine_tuned
2
'
)
# Сохраняет токенизатор
# model.save_pretrained("./micro_no_cross_fine_tuned")
# model.save_pretrained("./micro_no_cross_fine_tuned")
model
.
save_pretrained
(
"./micro_no_cross_fine_tuned/lora"
)
model
.
save_pretrained
(
"./micro_no_cross_fine_tuned/lora
2
"
)
# model.save_adapter('./micro_no_cross_fine_tuned') # Сохраняет адаптеры LoRA
# model.save_adapter('./micro_no_cross_fine_tuned') # Сохраняет адаптеры LoRA
print
(
"Все сохранено"
)
print
(
"Все сохранено"
)
...
@@ -193,6 +195,7 @@ print("Все сохранено")
...
@@ -193,6 +195,7 @@ print("Все сохранено")
def
predict
(
text
):
def
predict
(
text
):
# Токенизация (убедимся, что не передаем labels)
# Токенизация (убедимся, что не передаем labels)
model
.
eval
()
inputs
=
tokenizer
(
inputs
=
tokenizer
(
text
,
text
,
return_tensors
=
"pt"
,
return_tensors
=
"pt"
,
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment
Menu
Explore
Projects
Groups
Topics
Snippets