Добавление предварительно обученной модели вне AllenNLP в демоверсию AllenNLP
Я работаю над интерпретируемостью моделей. Я хочу использовать демонстрацию AllenAI для проверки карт заметности и методов состязательной атаки (реализованных в этой демонстрации) на некоторых других моделях. Я использую учебник здесь и запускаю демонстрацию на своем локальном компьютере. Теперь, когда я хочу загрузить свою предварительно обученную модель из Huggingface ("cardiffnlp/twitter-roberta-base-sentiment-latest" с использованием этого кода ), я не знаю, как добавить модель в демонстрацию. Я проверил учебник здесь, но это руководство основано только на моделях, реализованных в AllenNLP.
Это изменения в новом каталоге (roberta_sentiment_twitter), которые я сделал в файле allennlp_demo, но это точно не так, поскольку основная реализация использует только модели, реализованные в allennlp.
#in model.json
{
"id": "roberta-sentiment-twitter",
"pretrained_model_id": "cardiffnlp/twitter-roberta-base-sentiment-latest"
}
#in api.py
import os
from allennlp_demo.common import config, http
from transformers import AutoModelForSequenceClassification
from transformers import AutoTokenizer, AutoConfig
if __name__ == "__main__":
MODEL = f"cardiffnlp/twitter-roberta-base-sentiment-latest"
tokenizer = AutoTokenizer.from_pretrained(MODEL)
config = AutoConfig.from_pretrained(MODEL)
# model = AutoModelForSequenceClassification.from_pretrained(MODEL)
endpoint = AutoModelForSequenceClassification.from_pretrained(MODEL)
endpoint.run()
#in test_api.py
from allennlp_demo.common.testing import ModelEndpointTestCase
from allennlp_demo.roberta_sentiment_twitter.api import RobertaSentimentAnalysisModelEndpoint
class TestRobertaSentimentTwitterModelEndpoint(ModelEndpointTestCase):
endpoint = RobertaSentimentAnalysisModelEndpoint()
predict_input = {"sentence": "a very well-made, funny and entertaining picture."}
Есть ли простые способы загрузить мои модели в демо-версию AllenNLP?
Также в будущем я хочу добавить в эту демонстрацию какой-нибудь другой метод интерпретируемости. Есть ли какой-нибудь учебник для этого тоже?
2 ответа
Если вы просто заинтересованы в получении вывода от различных интерпретаторов значимости, в этой главе руководства объясняется, как использовать API (для этого вам не понадобится демонстрационный код внешнего интерфейса). Если вы хотите применить интерпретаторы к своим пользовательским моделям, вам также может быть полезной статья Как использовать интерпретацию Allen NLP для пользовательских моделей .
Для добавления собственных интерпретаторов вы можете установить allennlp из исходного кода и добавить свои методы в allennlp/interpret. Также не стесняйтесь делать PR на https://github.com/allenai/allennlp .
Если вам нужна локальная и глобальная интерпретируемость, которая извлекает то, что ваша модель узнала непосредственно из самой модели, попробуйте Leap Labs (https://www.leap-labs.com/). У них есть список ожидания новых инструментов интерпретируемости, которые появятся в ближайшие несколько недель, включая визуализацию функций и отображение значимости с использованием иерархических возмущений.