Описание основного интерфейса Transformers. Модель ChatGLM3-6B
Описание основного интерфейса Transformers. Модель ChatGLM3-6B

фон

ChatGLM3-6B — новейшая крупномасштабная языковая модель искусственного интеллекта, выпущенная в конце октября. Эффект действительно значительно улучшился. Но судя по документации, на официальном сайте Bilibili есть лишь несколько демоверсий и видеороликов. https://www.bilibili.com/video/BV1uC4y1J7yA Доступно для справки. Но если вы хотите углубиться, ключевые вызовы таковы:

Язык кода:txt
копировать
model.stream_chat(tokenizer, input, history, past_key_values=past_key_values,
                            return_past_key_values=True,
                            max_length=max_length, 
                            top_p=top_p,
                            temperature=temperature)

Что именно означает каждый параметр?

Потому что на Huggingface, modelscope.cn и github чатглма,Подробного описания основного интерфейса нет. Поиск по всей сети занял много времени.,Ответа тоже не нашел. Наконец после исследования,Вы можете узнать об этом из файлов исходного кода.:https://huggingface.co/THUDM/chatglm3-6b/blob/main/modeling_chatglm.py

Эта статья помогает каждому понять использование связанных интерфейсов, предоставляя соответствующий Аннотация интерфейса.

Отслеживаемость исходного кода

существоватьhuggingfaceизChatGLM3-6BизДомашняя страницасередина,Нажмите на вкладку «Файлы».

Файл modeling_chatglm.py можно найти, в нем находится код интерфейса.

Аннотация интерфейса

Функция чата

Язык кода:python
кодКоличество запусков:0
копировать
    @torch.inference_mode()
    def chat(self, tokenizer, query: str, history: List[Dict] = None, role: str = "user",
             max_length: int = 8192, num_beams=1, do_sample=True, top_p=0.8, temperature=0.8, logits_processor=None,
             **kwargs):
        """
        Функция чата, принимает текстовый запрос и возвращает ответ модели.

        параметр:
            tokenizer: Объект токенизатора, используемый для обработки входного и выходного текста.
            query (str): Ввод текста пользователем.
            history (List[Dict], необязательный): История разговоров, каждый элемент представляет собой словарь, содержащий роль («role») и контент («content»). По умолчанию — Нет.
            role (str, необязательный): Роль входного текста: «пользователь» или «помощник». По умолчанию «пользователь».
            max_length (int, необязательный): Максимальная длина создаваемого текста. По умолчанию — 8192.
            num_beams (int, необязательный): Ширина поиска луча. Если значение больше 1, используется поиск луча. По умолчанию — 1.
            do_sample (bool, необязательный): Следует ли выполнять выборку из распределения прогнозов. По умолчанию — Истина.
            top_p (float, необязательный): Порог кумулятивной вероятности при использовании выборки ядер. По умолчанию — 0,8.
            temperature (float, необязательный): Параметры, управляющие случайностью генерируемого текста. По умолчанию — 0,8.
            logits_processor (LogitsProcessorList, необязательный): Объект, используемый для обработки и изменения логитов на этапе сборки. По умолчанию — Нет.
            **kwargs: Остальные параметры передаются в функцию генерации модели.

        возвращаться:
            response (str): Текст ответа модели.
            history (List[Dict]): Обновлена ​​история разговоров.
        """
        if history is None:
            history = []
        if logits_processor is None:
            logits_processor = LogitsProcessorList()
        logits_processor.append(InvalidScoreLogitsProcessor())
        gen_kwargs = {"max_length": max_length, "num_beams": num_beams, "do_sample": do_sample, "top_p": top_p,
                      "temperature": temperature, "logits_processor": logits_processor, **kwargs}
        inputs = tokenizer.build_chat_input(query, history=history, role=role)
        inputs = inputs.to(self.device)
        eos_token_id = [tokenizer.eos_token_id, tokenizer.get_command("<|user|>"),
                        tokenizer.get_command("<|observation|>")]
        outputs = self.generate(**inputs, **gen_kwargs, eos_token_id=eos_token_id)
        outputs = outputs.tolist()[0][len(inputs["input_ids"][0]):-1]
        response = tokenizer.decode(outputs)
        history.append({"role": role, "content": query})
        response, history = self.process_response(response, history)
        return response, history

Функция потоковой передачи чата

Язык кода:python
кодКоличество запусков:0
копировать
    @torch.inference_mode()
    def stream_chat(self, tokenizer, query: str, history: List[Dict] = None, role: str = "user",
                    past_key_values=None,max_length: int = 8192, do_sample=True, top_p=0.8, temperature=0.8,
                    logits_processor=None, return_past_key_values=False, **kwargs):
        """
        Функция потоковой передачи чата, принимает текстовый запрос и возвращает ответ модели.Эта функция является генератором,可以существовать流式处理середина使用。

        параметр:
            tokenizer: Объект токенизатора, используемый для обработки входного и выходного текста.
            query (str): Ввод текста пользователем.
            history (List[Dict], необязательный): История разговоров, каждый элемент представляет собой словарь, содержащий роль («role») и контент («content»). По умолчанию — Нет.
            role (str, необязательный): Роль входного текста: «пользователь» или «помощник». По умолчанию «пользователь».
            past_key_values (List[Tensor], необязательный): Прошлые пары ключ-значение для модели преобразователя. По умолчанию — Нет.
            max_length (int, необязательный): Максимальная длина создаваемого текста. По умолчанию — 8192.
            do_sample (bool, необязательный): Следует ли выполнять выборку из распределения прогнозов. По умолчанию — Истина.
            top_p (float, необязательный): Порог кумулятивной вероятности при использовании выборки ядер. По умолчанию — 0,8.
            temperature (float, необязательный): Параметры, управляющие случайностью генерируемого текста. По умолчанию — 0,8.
            logits_processor (LogitsProcessorList, необязательный): Объект, используемый для обработки и изменения логитов на этапе сборки. По умолчанию — Нет.
            return_past_key_values (bool, необязательный): Возвращать ли прошлые пары ключ-значение для следующего поколения. По умолчанию — ложь.
            **kwargs: Остальные параметры передаются в функцию генерации модели.

        возвращаться:
            response (str): Текст ответа модели.
            history (List[Dict]): Обновлена ​​история разговоров.
            past_key_values (List[Tensor], необязательный): Если return_past_key_values ​​имеет значение True, возвращает прошлые пары ключ-значение, используемые для следующего поколения.
        """
        if history is None:
            history = []
        if logits_processor is None:
            logits_processor = LogitsProcessorList()
        logits_processor.append(InvalidScoreLogitsProcessor())
        eos_token_id = [tokenizer.eos_token_id, tokenizer.get_command("<|user|>"),
                        tokenizer.get_command("<|observation|>")]
        gen_kwargs = {"max_length": max_length, "do_sample": do_sample, "top_p": top_p,
                      "temperature": temperature, "logits_processor": logits_processor, **kwargs}
        if past_key_values is None:
            inputs = tokenizer.build_chat_input(query, history=history, role=role)
        else:
            inputs = tokenizer.build_chat_input(query, role=role)
        inputs = inputs.to(self.device)
        if past_key_values is not None:
            past_length = past_key_values[0][0].shape[0]
            if self.transformer.pre_seq_len is not None:
                past_length -= self.transformer.pre_seq_len
            inputs.position_ids += past_length
            attention_mask = inputs.attention_mask
            attention_mask = torch.cat((attention_mask.new_ones(1, past_length), attention_mask), dim=1)
            inputs['attention_mask'] = attention_mask
        history.append({"role": role, "content": query})
        for outputs in self.stream_generate(**inputs, past_key_values=past_key_values,
                                            eos_token_id=eos_token_id, return_past_key_values=return_past_key_values,
                                            **gen_kwargs):
            if return_past_key_values:
                outputs, past_key_values = outputs
            outputs = outputs.tolist()[0][len(inputs["input_ids"][0]):-1]
            response = tokenizer.decode(outputs)
            if response and response[-1] != "�":
                response, new_history = self.process_response(response, history)
                if return_past_key_values:
                    yield response, new_history, past_key_values
                else:
                    yield response, new_history
boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose