LLM для преобразования двоичного числа в десятичное

Итак, я новичок в использовании любых LLM. Ниже приведен код, который я использовал в своем ноутбуке Jupyter для запуска запроса на преобразование двоичного числа в десятичное. Однако по поводу «Ламы 3» я получал совершенно неправильные ответы.

!pip install -r requirements.txt
import json
import torch
from transformers import (AutoTokenizer,
                          AutoModelForCausalLM,
                          BitsAndBytesConfig,
                          pipeline)
config_data = json.load(open("config.json"))
HF_TOKEN = config_data["HF_TOKEN"]
model_name = "meta-llama/Meta-Llama-3-8B"
bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_use_double_quant=True,
    bnb_4bit_quant_type = "nf4",
    bnb_4bit_compute_dtype=torch.bfloat16
)
tokenizer = AutoTokenizer.from_pretrained(model_name, use_auth_token=HF_TOKEN)
tokenizer.pad_token = tokenizer.eos_token
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    quantization_config=bnb_config,
    use_auth_token=HF_TOKEN
)
text_generator = pipeline(
    "text-generation",
    model=model,
    tokenizer=tokenizer,
)
def convert_to_decimal(html_input):
    prompt = (f"I'm giving you a input as a binary number"
              f"I need you to convert the binary number to its decimal equivalent. "
              f"Do not give any explanation or add any further text. "
              f"Only provide the transformed output once. "
              f"Don't add any other text except the output. "
              f"For input '101', the output is '5'.\n\n"
              f"{html_input}")
    
    response = text_generator(prompt, max_new_tokens=20, temperature=0.2, return_full_text=False)
    generated_text = response[0]['generated_text'].strip()
    return generated_text
html_input = "1011"
output = convert_to_decimal(html_input)
print(output)

Это мой код, который я пытался использовать, я продолжал получать результат как 1101 1110 1111..... пока не будет достигнуто максимальное количество токенов. Любая помощь приветствуется относительно того, где я ошибаюсь.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ладно, ты новичок.
Так что LLM являются статическим продолжением данного текста, имейте это в виду.
Изначально у нас были LSTM, которым удавалось предсказать следующее слово в строке, а при зацикливании для создания предложений они быстро создавали бессмысленный текст. Их консистенция в лучшем случае составляла 1 алину. Позже были изобретены большие языковые модели, обученные на гораздо более крупных текстах и ​​типичных текстовых комбинациях вопросов и ответов.
LLM удается увидеть более крупные закономерности в данном тексте.
Но имейте в виду, что по сути это все равно продолжение шаблона.

Вы спрашиваете о математике, а студенты магистратуры не преуспевают в математике.
Они могут конвертировать голландский язык в английский, итальянский и т. д., но математика им недоступна.

Математика следует правилам и идеям, которым нелегко обучиться.
Чаще всего LLM даже не может определить длину своего ответа.
Так что они своего рода идиоты-ученые, они в чем-то преуспевают, но совершенно плохи в других задачах, например, в абстрактных расчетах.

если вам просто нужен двоичный ответ на Python, вы будете более эффективны, если сделаете это непосредственно в Python:

def DecimalToBinary(num):
    if num >= 1:
        DecimalToBinary(num // 2)
    print(num % 2, end = '')

Напомним, что все нейронные сети являются оценщиками, они не точны. Они действуют больше похоже на нечеткую логику (это следующий шаг).

Возможно, если вы хотите узнать больше о нейронных сетях, начните с основ и попробуйте решить проблему Kaggle Titanic: https://www.kaggle.com/competitions/titanic

А может лучше для начала https://www.kaggle.com/competitions/digit-recouncer

Есть также конкурсы по выявлению рака и т. д., да ладно, я думаю, большинство людей начинают с kaggle.

А как насчет немного другой задачи, например, преобразования времени предложения? Как это будет работать?

L lawliet 28.05.2024 11:05

Вероятно, это работает, структура слов примерно такая же, как и временные формы. у него есть базовое понимание времени, у него есть данные обучения из такого количества исходных текстов, что он понимает, как язык ведет себя в прошлом и настоящем, особенно английский. Некоторые другие языки, такие как голландский, не всегда корректны, но голландский (я сам голландец) имеет немного расплывчатый язык, и мы привыкаем ко всем исключениям, которые есть в нашем языке, и к нестрогим правилам. Он также понимает тон вопроса.

Peter 28.05.2024 11:27

На самом деле я пытался реализовать подсказку для преобразования времени предложения с помощью Llama 3. Есть ли у вас какие-либо подсказки, как действовать?

L lawliet 28.05.2024 13:21

напишите это сообщение в прошедшем времени: я собираюсь на работу

Peter 28.05.2024 14:09

попробуйте на groq.com там тоже используется лама

Peter 28.05.2024 14:10

Ну, я хочу, чтобы это было в коде, так как мне, вероятно, позже придется вводить большие файлы. Что касается кода, я получаю всевозможные странные ответы, но на groq он каким-то образом работает.

L lawliet 28.05.2024 14:56

возможно, начнем с последней версии lmstudio, она содержит несколько простых примеров.

Peter 28.05.2024 15:05

Давайте продолжим обсуждение в чате.

L lawliet 28.05.2024 15:19

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

Ошибка импорта: не удалось импортировать пакет Python chromadb. Пожалуйста, установите его с помощью `pip install chromadb`
Что означает «I» в разделе «_IQ» и «_M» в этом названии «Meta-Llama-3-8B-Instruct-IQ3_M.gguf»?
Как изменить функцию расстояния в langchainпохожий_поиск
Проблема с настройкой Llama-2 в Google Colab. Ошибка запуска ячейки при загрузке фрагментов контрольной точки
Как заставить диалоговую поисковую цепочку включать метаданные в приглашение, используя langchain с chromadb, чтобы LLM знал о метаданных?
Разница между ггуфом и лорой
Langchain: Как просмотреть контекст, который мой ретривер использовал при вызове
Модель Mistral генерирует одни и те же вложения для разных входных текстов
Ошибка анализа агента LangChain с помощью Structured_chat_agent и инструмента Wikipedia, предел попаданий handle_parsing_errors
Как развернуть приложение Flask в Верселе, чтобы я мог использовать его в качестве конечной точки API