Лучший способ прочитать мини-пакеты с очень большого стола BigQuery? - PullRequest
0 голосов
/ 29 января 2020

У меня есть большая (> 200M строк) таблица BigQuery, из которой я хотел бы прочитать мини-пакеты, чтобы я мог обучить модели машинного обучения. Набор данных слишком велик, чтобы поместиться в память, поэтому я не могу прочитать все сразу, но я хочу, чтобы моя модель извлекла уроки из всех данных. Я также хочу избежать слишком большого количества запросов из-за задержки в сети, поскольку это замедлит процесс обучения. Какой лучший способ сделать это в Python?

Ответы [ 2 ]

3 голосов
/ 29 января 2020

Ответ Фелипе работает, если вы используете TF, но если вы используете pytorch или хотите что-то более агностическое c для вашей тренировочной платформы, faucetml может работать хорошо:

Из примера в документации, если вы тренируетесь две эпохи:

fml = get_client(
    datastore="bigquery",
    credential_path="bq_creds.json",
    table_name="my_training_table",
    ds="2020-01-20",
    epochs=2,
    batch_size=1024
    chunk_size=1024 * 10000,
    test_split_percent=20,
)
for epoch in range(2):
    fml.prep_for_epoch()
    batch = fml.get_batch()
    while batch is not None:
        train(batch)
        batch = fml.get_batch()
1 голос
/ 29 января 2020

Используете ли вы Tensorflow?

tfio.bigquery.BigQueryClient 0,9.0 решает это:

read_session(
    parent,
    project_id,
    table_id,
    dataset_id,
    selected_fields,
    output_types=None,
    row_restriction='',
    requested_streams=1
)

С

required_streams : Начальное количество потоков. Если не установлено или 0, мы предоставим значение потоков, чтобы обеспечить разумную пропускную способность. Должен быть неотрицательным. Количество потоков может быть меньше, чем запрошенное число, в зависимости от разумного количества параллелизма таблицы и максимального количества параллелизма, разрешенного системой.

Исходный код:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...