Как установить переменную окружения при использовании движка gcloud ML? - PullRequest
0 голосов
/ 02 октября 2018

All,

(Среды: Windows 7, Python 3.6, библиотеки Keras и тензорного потока, движок gcloud ml)

Я использую некоторые примеры моделей Keras ML с использованием движка gcloud ml, как было представлено здесь .Все было хорошо, но я только получил различные результаты в нескольких запусках, хотя я использовал одни и те же данные обучения и проверки.Моя цель - получить результаты репродуктивного обучения за несколько прогонов.

Я некоторое время гуглял и нашел некоторые решения в этом Keras Q & A относительно получения репродуктивных результатов.Сначала они предложили следующее:

Во-первых, вам нужно установить переменную среды PYTHONHASHSEED в 0, прежде чем запускать программу (не в самой программе).

Я знаю, что могу установить переменные локально на своем компьютере или установить, когда я разверну функцию gcloud, как было показано здесь .

Но я просто не знаю, как устанавливать переменные окружения, когда я использовал gcloud ML engine (на стороне сервера, но НЕ на локальном).Поэтому я не могу установить «PYTHONHASHSEED = 0» на сервере gcloud, когда на нем работают мои модельные программы.

Кстати, в общем, я знаю, что случайность - полезная природа в области ML, но я не очень хорошо знаком сТема получения репродуктивных результатов пока что, поэтому любые мысли по этой теме также приветствуются.Спасибо!

Daqi

PS: я пытался установить переменные среды во время выполнения ниже:

import os
os.environ["PYTHONHASHSEED"] = "0" 
print(hash("keras"))

Но это не может привести к тому, что "установка переменных"до запуска программы ".Таким образом, имея этот код, я все еще не могу получить одинаковые результаты хеширования от нескольких запусков.С другой стороны, на локальном уровне, если я установлю «PYTHONHASHSEED = 0» перед запуском кода, я могу получить те же результаты хеширования.

1 Ответ

0 голосов
/ 03 октября 2018

Я не верю, что Cloud ML Engine API предоставляет механизм для установки переменных среды.Однако вы можете обойти это, написав скрипт-оболочку (NB: UNTESTED CODE):

import os
import subprocess

env = os.environ.copy()
env["PYTHONHASHSEED"] = "0"

subprocess.check_call(['python', 'main.py'], env=env)
...