Как получить доступ к Google Cloud Storage Bucket из задания AI Platform - PullRequest
0 голосов
/ 25 мая 2019

У моей учебной работы по Google AI Platform / ML Engine нет доступа к учебному файлу, который я положил в корзину Google Cloud Storage.

Google AI Platform / ML Engine требует, чтобы вы хранили файлы обучающих данных в одном из их хранилищ облачного хранилища. Доступ локально из CLI работает нормально. Однако, когда я отправляю учебное задание (после того, как данные находятся в соответствующем месте в моем хранилище облачного хранилища), я получаю сообщение об ошибке, которая, по-видимому, связана с отсутствием доступа к хранилищу Link URL.

Ошибка в том, что я пытаюсь прочитать то, что мне кажется содержимым веб-страницы, которую Google обслуживает, говоря: «Эй, у тебя нет доступа к этому». Я вижу это gaia.loginAutoRedirect.start(5000, и URL с этим флагом в конце: noautologin=true.

Я знаю, что разрешения между платформой AI и облачным хранилищем - это одно, но оба проекта находятся в одном проекте. Пошаговые руководства, которые я использую, по крайней мере, подразумевают, что никаких дополнительных действий не требуется, если в рамках того же проекта.

Я предполагаю, что мне нужно использовать Link URL, предоставленный на вкладке Обзор корзины. Попробовал Link for gsutil, но питон (из Google CloudML Samples repo ) расстроился из-за использования gs://.

Я думаю, что примеры Google оказываются недостаточными, поскольку данные их примеров взяты из общедоступного URL-адреса, а не из частного хранилища Cloud Storage.

В конечном итоге я получаю сообщение об ошибке Python. Но, как я уже сказал, этому предшествует куча INFO журналов HTML / CSS / JS от Google, в которых говорится, что у меня нет разрешения на получение файла, который я пытаюсь получить. Эти журналы на самом деле только потому, что я добавил оператор печати в файл util.py - прямо перед read_csv() в файле train. (Таким образом, ошибка разбора Python связана с попыткой разобрать HTML как CSV).

... 
INFO    g("gaia.loginAutoRedirect.stop",function(){var b=n;b.b=!0;b.a&&(clearInterval(b.a),b.a=null)});
INFO    gaia.loginAutoRedirect.start(5000,
INFO    'https:\x2F\x2Faccounts.google.com\x2FServiceLogin?continue=https%3A%2F%2Fstorage.cloud.google.com%2F<BUCKET_NAME>%2Fdata%2F%2Ftrain.csv\x26followup=https%3A%2F%2Fstorage.cloud.google.com%2F<BUCKET_NAME>%2Fdata%2F%2Ftrain.csv\x26service=cds\x26passive=1209600\x26noautologin=true',
ERROR   Command '['python', '-m', u'trainer.task', u'--train-files', u'gs://<BUCKET_NAME>/data/train.csv', u'--eval-files', u'gs://<BUCKET_NAME>/data/test.csv', u'--batch-pct', u'0.2', u'--num-epochs', u'1000', u'--verbosity', u'DEBUG', '--job-dir', u'gs://<BUCKET_NAME>/predictor']' returned non-zero exit status 1.
Traceback (most recent call last):
  File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/root/.local/lib/python2.7/site-packages/trainer/task.py", line 137, in <module>
    train_and_evaluate(args)
  File "/root/.local/lib/python2.7/site-packages/trainer/task.py", line 80, in train_and_evaluate
    train_x, train_y, eval_x, eval_y = util.load_data()
  File "/root/.local/lib/python2.7/site-packages/trainer/util.py", line 168, in load_data
    train_df = pd.read_csv(training_file_path, header=0, names=_CSV_COLUMNS, na_values='?')
  File "/usr/local/lib/python2.7/dist-packages/pandas/io/parsers.py", line 678, in parser_f
    return _read(filepath_or_buffer, kwds)
  File "/usr/local/lib/python2.7/dist-packages/pandas/io/parsers.py", line 446, in _read
    data = parser.read(nrows)
  File "/usr/local/lib/python2.7/dist-packages/pandas/io/parsers.py", line 1036, in read
    ret = self._engine.read(nrows)
  File "/usr/local/lib/python2.7/dist-packages/pandas/io/parsers.py", line 1848, in read
    data = self._reader.read(nrows)
  File "pandas/_libs/parsers.pyx", line 876, in pandas._libs.parsers.TextReader.read
  File "pandas/_libs/parsers.pyx", line 891, in pandas._libs.parsers.TextReader._read_low_memory
  File "pandas/_libs/parsers.pyx", line 945, in pandas._libs.parsers.TextReader._read_rows
  File "pandas/_libs/parsers.pyx", line 932, in pandas._libs.parsers.TextReader._tokenize_rows
  File "pandas/_libs/parsers.pyx", line 2112, in pandas._libs.parsers.raise_parser_error
ParserError: Error tokenizing data. C error: Expected 5 fields in line 205, saw 961

Чтобы получить данные, я более или менее пытаюсь имитировать это: https://github.com/GoogleCloudPlatform/cloudml-samples/blob/master/census/tf-keras/trainer/util.py

Различные способы, которыми я пытался обратиться к своему ведру в моей копии util.py: https://console.cloud.google.com/storage/browser/<BUCKET_NAME>/data (думаю, это был "URL ссылки" еще в мае)
https://storage.cloud.google.com/<BUCKET_NAME>/data (сейчас это "URL ссылки" - в июле)
gs://<BUCKET_NAME>/data (это URI - который выдает другую ошибку о том, что не нравится gs как тип URL)

...