Поддержка Hugging Face
Расширение httpfs добавляет поддержку протокола hf:// для доступа к наборам данных, размещенным в репозиториях Hugging Face. Подробности см. в записи в блоге об этом.
Использование
Репозитории Hugging Face можно запросить с использованием следующего шаблона URL:
hf://datasets/⟨my_username⟩/⟨my_dataset⟩/⟨path_to_file⟩
Например, для чтения CSV-файла можно использовать следующий запрос:
SELECT * FROM 'hf://datasets/datasets-examples/doc-formats-csv-1/data.csv';
Где:
-
datasets-examples— имя пользователя/организации -
doc-formats-csv-1— имя репозитория набора данных -
data.csv— путь к файлу в репозитории
Результат запроса:
| вид | звук |
|---|---|
| собака | гав |
| кот | мяуканье |
| покемон | пика |
| человек | привет |
Для чтения JSONL-файла можно выполнить:
SELECT * FROM 'hf://datasets/datasets-examples/doc-formats-jsonl-1/data.jsonl';
Наконец, для чтения Parquet-файла используйте следующий запрос:
SELECT * FROM 'hf://datasets/datasets-examples/doc-formats-parquet-1/data/train-00000-of-00001.parquet';
Каждая из этих команд считывает данные из указанного формата файла и отображает их в структурированном табличном формате. Выберите соответствующую команду в зависимости от используемого формата файла.
Создание локальной таблицы
Чтобы избежать доступа к удаленному конечной точке для каждого запроса, вы можете сохранить данные в таблицу DuckDB, выполнив команду CREATE TABLE ... AS. Например:
CREATE TABLE data AS
SELECT *
FROM 'hf://datasets/datasets-examples/doc-formats-csv-1/data.csv'; Затем просто запросите таблицу data следующим образом:
SELECT * FROM data;
Множественные файлы
Для запроса всех файлов в определенной директории можно использовать шаблон шаблон подстановки. Например:
SELECT count(*) AS count FROM 'hf://datasets/cais/mmlu/astronomy/*.parquet';
| количество |
|---|
| 173 |
Использование шаблонов подстановки позволяет эффективно обрабатывать большие наборы данных и выполнять полные запросы по множеству файлов, упрощая задачи просмотра и обработки данных. Вот как можно найти вопросы, содержащие слово «планета» в астрономии:
SELECT count(*) AS count FROM 'hf://datasets/cais/mmlu/astronomy/*.parquet' WHERE question LIKE '%planet%';
| количество |
|---|
| 21 |
Версии и правки
В репозиториях Hugging Face версии или правки наборов данных — это различные обновления наборов данных. Каждая версия представляет собой моментальный снимок на определенное время, позволяющий отслеживать изменения и улучшения. В терминах Git это можно понимать как ветвь или конкретный коммит.
Вы можете запросить различные версии/правки наборов данных, используя следующий URL:
hf://datasets/⟨my-username⟩/⟨my-dataset⟩@⟨my_branch⟩/⟨path_to_file⟩
Например:
SELECT * FROM 'hf://datasets/datasets-examples/doc-formats-csv-1@~parquet/**/*.parquet';
| вид | звук |
|---|---|
| собака | гав |
| кот | мяуканье |
| покемон | пика |
| человек | привет |
Предыдущий запрос прочитает все Parquet-файлы в рамках версии ~parquet. Это специальная ветвь, где Hugging Face автоматически генерирует Parquet-файлы каждого набора данных для обеспечения эффективного сканирования.
Авторизация
Настройте свой токен Hugging Face в диспетчере секретов DuckDB для доступа к закрытым или защищенным наборам данных. Сначала посетите Настройки Hugging Face — Токены, чтобы получить свой токен доступа. Во-вторых, установите его в вашей сессии DuckDB, используя диспетчер секретов DuckDB.
CONFIG
Пользователь должен передать всю конфигурационную информацию в оператор CREATE SECRET. Чтобы создать секрет, используя поставщика CONFIG, используйте следующую команду:
CREATE SECRET hf_token (
TYPE HUGGINGFACE,
TOKEN 'your_hf_token'
); CREDENTIAL_CHAIN
Автоматически пытается извлечь учетные данные. Для токена Hugging Face он будет пытаться получить его из ~/.cache/huggingface/token. Чтобы создать секрет, используя поставщика CREDENTIAL_CHAIN, используйте следующую команду:
CREATE SECRET hf_token (
TYPE HUGGINGFACE,
PROVIDER CREDENTIAL_CHAIN
);
© Copyright 2018–2024 Stichting DuckDB Foundation
Licensed under the MIT License.
https://duckdb.org/docs/extensions/httpfs/hugging_face.html