使用 GPU google 云 ML 引擎进行慢速训练
slow training with GPU google cloud ML engine
抱歉,如果我的问题太垃圾了,但我花了很多时间试图理解问题的原因,但我做不到
所以这里是
我正在 google 云 ML 上训练 tacotron 模型我之前在 floyd hub 上训练过它并且它非常快所以我配置我的项目能够 运行 在 google 毫升
这是我对项目所做的主要更改
原创
with open(metadata_filename, encoding='utf-8') as f:
self._metadata = [line.strip().split('|') for line in f]
hours = sum((int(x[2]) for x in self._metadata)) * hparams.frame_shift_ms / (3600 * 1000)
log('Loaded metadata for %d examples (%.2f hours)' % (len(self._metadata), hours))
我的配置
with file_io.FileIO(metadata_filename, 'r') as f:
self._metadata = [line.strip().split('|') for line in f]
hours = sum((int(x[2]) for x in self._metadata)) * hparams.frame_shift_ms / (3600 * 1000)
log('Loaded metadata for %d examples (%.2f hours)' % (len(self._metadata), hours))
原创
def _get_next_example(self):
'''Loads a single example (input, mel_target, linear_target, cost) from disk'''
if self._offset >= len(self._metadata):
self._offset = 0
random.shuffle(self._metadata)
meta = self._metadata[self._offset]
self._offset += 1
text = meta[3]
if self._cmudict and random.random() < _p_cmudict:
text = ' '.join([self._maybe_get_arpabet(word) for word in text.split(' ')])
input_data = np.asarray(text_to_sequence(text, self._cleaner_names), dtype=np.int32)
linear_target = np.load(os.path.join(self._datadir, meta[0]))
mel_target = np.load(os.path.join(self._datadir, meta[1]))
return (input_data, mel_target, linear_target, len(linear_target))
我的配置
def _get_next_example(self):
'''Loads a single example (input, mel_target, linear_target, cost) from disk'''
if self._offset >= len(self._metadata):
self._offset = 0
random.shuffle(self._metadata)
meta = self._metadata[self._offset]
self._offset += 1
text = meta[3]
if self._cmudict and random.random() < _p_cmudict:
text = ' '.join([self._maybe_get_arpabet(word) for word in text.split(' ')])
input_data = np.asarray(text_to_sequence(text, self._cleaner_names), dtype=np.int32)
f = BytesIO(file_io.read_file_to_string(
os.path.join(self._datadir, meta[0]),binary_mode=True))
linear_target = np.load(f)
s = BytesIO(file_io.read_file_to_string(
os.path.join(self._datadir, meta[1]),binary_mode = True))
mel_target = np.load(s)
return (input_data, mel_target, linear_target, len(linear_target))
这里有 2 个屏幕截图来显示差异
Google ML,FLoydhub
这是我在 google ML 中使用的训练命令,我使用 scale-tier=BASIC_GPU
gcloud ml-engine jobs submit training "$JOB_NAME" --stream-logs --module-name trainier.train --package-path trainier --staging-bucket "$BUCKET_NAME" --region "us-central1" --scale-tier=basic-gpu --config ~/gp-master/config.yaml --runtime-version=1.4 -- --base_dir "$BASEE_DIR" --input "$TRAIN_DATA"
所以我的问题是我是否做了一些可能导致读取数据缓慢的事情,或者 google 云 ML 中存在问题,我对此表示怀疑??
好吧,我想通了,我应该把 tensorflow-gpu==1.4 放在必需的包中,而不是 tensorflow==1.4 ^^
抱歉,如果我的问题太垃圾了,但我花了很多时间试图理解问题的原因,但我做不到 所以这里是
我正在 google 云 ML 上训练 tacotron 模型我之前在 floyd hub 上训练过它并且它非常快所以我配置我的项目能够 运行 在 google 毫升
这是我对项目所做的主要更改
原创
with open(metadata_filename, encoding='utf-8') as f:
self._metadata = [line.strip().split('|') for line in f]
hours = sum((int(x[2]) for x in self._metadata)) * hparams.frame_shift_ms / (3600 * 1000)
log('Loaded metadata for %d examples (%.2f hours)' % (len(self._metadata), hours))
我的配置
with file_io.FileIO(metadata_filename, 'r') as f:
self._metadata = [line.strip().split('|') for line in f]
hours = sum((int(x[2]) for x in self._metadata)) * hparams.frame_shift_ms / (3600 * 1000)
log('Loaded metadata for %d examples (%.2f hours)' % (len(self._metadata), hours))
原创
def _get_next_example(self):
'''Loads a single example (input, mel_target, linear_target, cost) from disk'''
if self._offset >= len(self._metadata):
self._offset = 0
random.shuffle(self._metadata)
meta = self._metadata[self._offset]
self._offset += 1
text = meta[3]
if self._cmudict and random.random() < _p_cmudict:
text = ' '.join([self._maybe_get_arpabet(word) for word in text.split(' ')])
input_data = np.asarray(text_to_sequence(text, self._cleaner_names), dtype=np.int32)
linear_target = np.load(os.path.join(self._datadir, meta[0]))
mel_target = np.load(os.path.join(self._datadir, meta[1]))
return (input_data, mel_target, linear_target, len(linear_target))
我的配置
def _get_next_example(self):
'''Loads a single example (input, mel_target, linear_target, cost) from disk'''
if self._offset >= len(self._metadata):
self._offset = 0
random.shuffle(self._metadata)
meta = self._metadata[self._offset]
self._offset += 1
text = meta[3]
if self._cmudict and random.random() < _p_cmudict:
text = ' '.join([self._maybe_get_arpabet(word) for word in text.split(' ')])
input_data = np.asarray(text_to_sequence(text, self._cleaner_names), dtype=np.int32)
f = BytesIO(file_io.read_file_to_string(
os.path.join(self._datadir, meta[0]),binary_mode=True))
linear_target = np.load(f)
s = BytesIO(file_io.read_file_to_string(
os.path.join(self._datadir, meta[1]),binary_mode = True))
mel_target = np.load(s)
return (input_data, mel_target, linear_target, len(linear_target))
这里有 2 个屏幕截图来显示差异 Google ML,FLoydhub
这是我在 google ML 中使用的训练命令,我使用 scale-tier=BASIC_GPU
gcloud ml-engine jobs submit training "$JOB_NAME" --stream-logs --module-name trainier.train --package-path trainier --staging-bucket "$BUCKET_NAME" --region "us-central1" --scale-tier=basic-gpu --config ~/gp-master/config.yaml --runtime-version=1.4 -- --base_dir "$BASEE_DIR" --input "$TRAIN_DATA"
所以我的问题是我是否做了一些可能导致读取数据缓慢的事情,或者 google 云 ML 中存在问题,我对此表示怀疑??
好吧,我想通了,我应该把 tensorflow-gpu==1.4 放在必需的包中,而不是 tensorflow==1.4 ^^