Добавление предварительно обученной модели вне 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/). У них есть список ожидания новых инструментов интерпретируемости, которые появятся в ближайшие несколько недель, включая визуализацию функций и отображение значимости с использованием иерархических возмущений.

Другие вопросы по тегам