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
9bda9552
Commit
9bda9552
authored
1 week ago
by
Мазур Грета Евгеньевна
Browse files
Options
Download
Patches
Plain Diff
micro zapusk no cross
parent
7a0cdb94
master
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
.ipynb_checkpoints/checkLora-checkpoint.py
+9
-8
.ipynb_checkpoints/checkLora-checkpoint.py
checkLora.py
+9
-8
checkLora.py
with
18 additions
and
16 deletions
+18
-16
.ipynb_checkpoints/checkLora-checkpoint.py
+
9
−
8
View file @
9bda9552
...
...
@@ -143,7 +143,7 @@ import torch
import
torch
from
peft
import
PeftModel
,
PeftConfig
from
transformers
import
BertTokenizer
,
AutoModel
from
transformers
import
BertTokenizer
,
BertForSequenceClassification
# Определяем устройство
device
=
torch
.
device
(
"cuda"
if
torch
.
cuda
.
is_available
()
else
"cpu"
)
...
...
@@ -151,8 +151,8 @@ device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
# Загружаем конфигурацию LoRA
config
=
PeftConfig
.
from_pretrained
(
"./micro_no_cross_fine_tuned"
)
# Загружаем базовую модель
model
=
AutoModel
.
from_pretrained
(
config
.
base_model_name_or_path
)
# Загружаем базовую модель
для классификации с двумя выходами (безопасность и атака)
model
=
BertForSequenceClassification
.
from_pretrained
(
config
.
base_model_name_or_path
,
num_labels
=
5
)
# 1 для безопасности и 4 для атак
# Загружаем LoRA-адаптеры
model
=
PeftModel
.
from_pretrained
(
model
,
"./micro_no_cross_fine_tuned"
,
is_trainable
=
False
)
...
...
@@ -171,12 +171,12 @@ def predict(text):
# Включаем режим без градиентов для предсказания
with
torch
.
no_grad
():
#
Используем ваш кастомный forward метод (MultiTaskBert)
#
Получаем выходы модели
outputs
=
model
(
**
inputs
)
#
Достаем logits из outputs
safety_probs
=
torch
.
softmax
(
outputs
[
'
logits
_safety'
],
dim
=
1
)
attack_probs
=
torch
.
softmax
(
outputs
[
'
logits
_attack'
],
dim
=
1
)
#
Получаем вероятности для безопасности
safety_probs
=
torch
.
softmax
(
outputs
.
logits
[:,
0
:
2
],
dim
=
1
)
# Пример для двух классов: безопасно/небезопасно
attack_probs
=
torch
.
softmax
(
outputs
.
logits
[:,
2
:
],
dim
=
1
)
# Пример для атак: jailbreak, evasion, generic, injection
return
{
'safety'
:
{
...
...
@@ -202,6 +202,7 @@ for prompt in test_prompts:
result
=
predict
(
prompt
)
print
(
f
"
\n
Текст:
{
prompt
}
"
)
print
(
f
"Безопасность: Safe
{
result
[
'safety'
][
'safe'
]
:
.
2
%
}
| Unsafe
{
result
[
'safety'
][
'unsafe'
]
:
.
2
%
}
"
)
if
result
[
'safety'
][
'unsafe'
]
>
0.5
:
print
(
"Тип атаки:"
)
for
attack_type
,
prob
in
result
[
'attack'
].
items
():
...
...
This diff is collapsed.
Click to expand it.
checkLora.py
+
9
−
8
View file @
9bda9552
...
...
@@ -143,7 +143,7 @@ import torch
import
torch
from
peft
import
PeftModel
,
PeftConfig
from
transformers
import
BertTokenizer
,
AutoModel
from
transformers
import
BertTokenizer
,
BertForSequenceClassification
# Определяем устройство
device
=
torch
.
device
(
"cuda"
if
torch
.
cuda
.
is_available
()
else
"cpu"
)
...
...
@@ -151,8 +151,8 @@ device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
# Загружаем конфигурацию LoRA
config
=
PeftConfig
.
from_pretrained
(
"./micro_no_cross_fine_tuned"
)
# Загружаем базовую модель
model
=
AutoModel
.
from_pretrained
(
config
.
base_model_name_or_path
)
# Загружаем базовую модель
для классификации с двумя выходами (безопасность и атака)
model
=
BertForSequenceClassification
.
from_pretrained
(
config
.
base_model_name_or_path
,
num_labels
=
5
)
# 1 для безопасности и 4 для атак
# Загружаем LoRA-адаптеры
model
=
PeftModel
.
from_pretrained
(
model
,
"./micro_no_cross_fine_tuned"
,
is_trainable
=
False
)
...
...
@@ -171,12 +171,12 @@ def predict(text):
# Включаем режим без градиентов для предсказания
with
torch
.
no_grad
():
#
Используем ваш кастомный forward метод (MultiTaskBert)
#
Получаем выходы модели
outputs
=
model
(
**
inputs
)
#
Достаем logits из outputs
safety_probs
=
torch
.
softmax
(
outputs
[
'
logits
_safety'
],
dim
=
1
)
attack_probs
=
torch
.
softmax
(
outputs
[
'
logits
_attack'
],
dim
=
1
)
#
Получаем вероятности для безопасности
safety_probs
=
torch
.
softmax
(
outputs
.
logits
[:,
0
:
2
],
dim
=
1
)
# Пример для двух классов: безопасно/небезопасно
attack_probs
=
torch
.
softmax
(
outputs
.
logits
[:,
2
:
],
dim
=
1
)
# Пример для атак: jailbreak, evasion, generic, injection
return
{
'safety'
:
{
...
...
@@ -202,6 +202,7 @@ for prompt in test_prompts:
result
=
predict
(
prompt
)
print
(
f
"
\n
Текст:
{
prompt
}
"
)
print
(
f
"Безопасность: Safe
{
result
[
'safety'
][
'safe'
]
:
.
2
%
}
| Unsafe
{
result
[
'safety'
][
'unsafe'
]
:
.
2
%
}
"
)
if
result
[
'safety'
][
'unsafe'
]
>
0.5
:
print
(
"Тип атаки:"
)
for
attack_type
,
prob
in
result
[
'attack'
].
items
():
...
...
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