0

나는 다음과 같은 구성 (config.yaml)을 선택했을 때 메모리가 부족 얻기의 문제를 데에서 학습 https://github.com/GoogleCloudPlatform/cloudml-samples/blob/master/criteo_tft/config-large.yamlGoogle 클라우드 시스템 메모리

링크에서 1TB 데이터를 학습 할 수 있다고합니다. 나는 시험을주기 위해 매우 감동했다! !!

내 데이터 세트는 범주 형이므로 1 핫 인코딩 (크기가 520000 x 4000 인 2D numpy 배열) 후에 매우 큰 매트릭스를 생성합니다. 32GB 메모리를 사용하는 로컬 컴퓨터에서 데이터 세트를 학습 할 수는 있지만 클라우드에서 동일한 작업을 수행 할 수는 없습니다! 여기

오류 있습니다. "TensorFlow 백엔드를 사용"

ERROR 2017-12-18 12:57:37 +1100 worker-replica-1  Using TensorFlow 
backend. 

ERROR 2017-12-18 12:57:37 +1100 worker-replica-4  Using TensorFlow      
backend. 

INFO 2017-12-18 12:57:37 +1100 worker-replica-0  Running command: 
python -m trainer.task --train-file gs://my_bucket/my_training_file.csv -- 
job-dir gs://my_bucket/my_bucket_20171218_125645 

ERROR 2017-12-18 12:57:38 +1100 worker-replica-2  Using TensorFlow 
backend. 

ERROR 2017-12-18 12:57:40 +1100 worker-replica-0  Using TensorFlow 
backend. 

ERROR 2017-12-18 12:57:53 +1100 worker-replica-3  Command 
'['python', '-m', u'trainer.task', u'--train-file', 
u'gs://my_bucket/my_training_file.csv', '--job-dir', 
u'gs://my_bucket/my_bucket_20171218_125645']' returned non-zero exit status -9 

INFO 2017-12-18 12:57:53 +1100 worker-replica-3  Module 
completed; cleaning up. 

INFO 2017-12-18 12:57:53 +1100 worker-replica-3  Clean up 
finished. 

ERROR 2017-12-18 12:57:56 +1100 worker-replica-4  Command 
'['python', '-m', u'trainer.task', u'--train-file', 
u'gs://my_bucket/my_training_file.csv', '--job-dir', 
u'gs://my_bucket/my_bucket_20171218_125645']' returned non-zero exit status -9 

INFO 2017-12-18 12:57:56 +1100 worker-replica-4  Module 
completed; cleaning up. 

INFO 2017-12-18 12:57:56 +1100 worker-replica-4  Clean up 
finished. 

ERROR 2017-12-18 12:57:58 +1100 worker-replica-2  Command 
'['python', '-m', u'trainer.task', u'--train-file', 
u'gs://my_bucket/my_training_file.csv', '--job-dir', 
u'gs://my_bucket/my_bucket_20171218_125645']' returned non-zero exit status -9 

INFO 2017-12-18 12:57:58 +1100 worker-replica-2  Module 
completed; cleaning up. 

INFO 2017-12-18 12:57:58 +1100 worker-replica-2  Clean up 
finished. 

ERROR 2017-12-18 12:57:59 +1100 worker-replica-1  Command 
'['python', '-m', u'trainer.task', u'--train-file', 
u'gs://my_bucket/my_training_file.csv', '--job-dir', 
u'gs://my_bucket/my_bucket_20171218_125645']' returned non-zero exit status -9 

INFO 2017-12-18 12:57:59 +1100 worker-replica-1  Module 
completed; cleaning up. 

INFO 2017-12-18 12:57:59 +1100 worker-replica-1  Clean up finished. 

ERROR 2017-12-18 12:58:01 +1100 worker-replica-0  Command 
'['python', '-m', u'trainer.task', u'--train-file', 
u'gs://my_bucket/my_training_file.csv', '--job-dir', 
u'gs://my_bucket/my_bucket_20171218_125645']' returned non-zero exit status -9 

INFO 2017-12-18 12:58:01 +1100 worker-replica-0  Module 
completed; cleaning up. 

INFO 2017-12-18 12:58:01 +1100 worker-replica-0  Clean up finished. 

ERROR 2017-12-18 12:58:43 +1100 service  The replica worker 0 ran 
out-of-memory and exited with a non-zero status of 247. The replica worker 1 
ran out-of-memory and exited with a non-zero status of 247. The replica 
worker 2 ran out-of-memory and exited with a non-zero status of 247. The 
replica worker 3 ran out-of-memory and exited with a non-zero status of 247. 
The replica worker 4 ran out-of-memory and exited with a non-zero status of 
247. To find out more about why your job exited please check the logs: 
https://console.cloud.google.com/logs/viewer?project=a_project_id........(link to to my cloud log) 

INFO 2017-12-18 12:58:44 +1100 ps-replica-0  Signal 15 (SIGTERM) 
was caught. Terminated by service. This is normal behavior. 

INFO 2017-12-18 12:58:44 +1100 ps-replica-1  Signal 15 (SIGTERM) 
was caught. Terminated by service. This is normal behavior. 

INFO 2017-12-18 12:58:44 +1100 ps-replica-0  Module completed; 
cleaning up. 

INFO 2017-12-18 12:58:44 +1100 ps-replica-0  Clean up finished. 

INFO 2017-12-18 12:58:44 +1100 ps-replica-1  Module completed; 
cleaning up. 

INFO 2017-12-18 12:58:44 +1100 ps-replica-1  Clean up finished. 

INFO 2017-12-18 12:58:44 +1100 ps-replica-2  Signal 15 
(SIGTERM) was caught. Terminated by service. This is normal behavior. 

INFO 2017-12-18 12:58:44 +1100 ps-replica-2  Module completed; 
cleaning up. 

INFO 2017-12-18 12:58:44 +1100 ps-replica-2  Clean up finished. 

INFO 2017-12-18 12:58:44 +1100 ps-replica-3  Signal 15 (SIGTERM) 
was caught. Terminated by service. This is normal behavior. 

INFO 2017-12-18 12:58:44 +1100 ps-replica-5  Signal 15 (SIGTERM) 
was caught. Terminated by service. This is normal behavior. 

INFO 2017-12-18 12:58:44 +1100 ps-replica-3  Module completed; 
cleaning up. 

INFO 2017-12-18 12:58:44 +1100 ps-replica-3  Clean up finished. 

INFO 2017-12-18 12:58:44 +1100 ps-replica-5  Module completed; 
cleaning up. 

INFO 2017-12-18 12:58:44 +1100 ps-replica-5  Clean up finished. 

INFO 2017-12-18 12:58:44 +1100 ps-replica-4  Signal 15 (SIGTERM) 
was caught. Terminated by service. This is normal behavior. 

INFO 2017-12-18 12:58:44 +1100 ps-replica-4  Module completed; 
cleaning up. 

INFO 2017-12-18 12:58:44 +1100 ps-replica-4  Clean up finished. 

INFO 2017-12-18 12:59:28 +1100 service  Finished tearing down 
TensorFlow. 

INFO 2017-12-18 13:00:17 +1100 service  Job failed.## 

에 대해 걱정하지 마십시오 오류가 발생하여 다른 작은 데이터 세트에서도 교육 일은 성공적입니다.

메모리 부족 (오류 247)의 원인을 설명하고 이러한 문제를 피하기 위해 config.yaml 파일을 작성하고 클라우드에서 데이터를 교육 할 수 있습니까?

답변

0

문제가 해결되었습니다. 문제는 tensorflow 버전에서 특히 클라우드에서 교육 일자리를 제출하는 방법과 관련되어있었습니다. 내가 지정한 불구하고

export JOB_NAME="my_job_name_$(date +%Y%m%d_%H%M%S)" 
export BUCKET_NAME=my_bucket_name 
export REGION=us-central1 
gcloud ml-engine jobs submit training $JOB_NAME \ 
--job-dir gs://$BUCKET_NAME/$JOB_NAME \ 
--runtime-version 1.0 \ 
--module-name trainer.task \ 
--package-path ./trainer \ 
--region $REGION \ 
--config=trainer/config.yaml \ 
-- \ 
--train-file gs://$BUCKET_NAME/my_training_data.csv 

위 스크립트의 런타임 버전을 보면이 TensorFlow에게 버전 1.0을 선택하는 내 훈련 일을 강요하는 "1.0"입니다 :

내 훈련 작업으로 제출 위의 설정은 1.3과 같은 1.4.0, 1.4.1 등] 이후의 안정적인 tensorflow 버전을 선택합니다

'tensorflow >= 1.3' 

: 나의 설정 파일에 tensorflow. 제 경우에는 1.4.1을 선택했습니다.

그래서 그들이 같이있어 줄의 1.4

... --runtime 버전 1.4 \ ... 과 휴식에 런타임 버전을 변경합니다.

참고 : 큰 데이터 세트에서 작업하는 경우, 난 강력하게 설정 파일 (config.yaml)의 "large_model"를 사용하는 것이 좋습니다 당신은 하나의 기계에 만족하는 경우, 당신은 쓸 수 있습니다 :

trainingInput: 
    scaleTier: CUSTOM 
    masterType: large_model 
    runtimeVersion: "1.4" 

위의 구성에서 "masterType : large_model"을 사용하면 많은 메모리가있는 컴퓨터를 선택할 수 있습니다. 모델이 클 때 매개 변수 서버에 특히 적합합니다 (숨겨진 많은 레이어가 있거나 매우 많은 수의 노드가있는 레이어). 이제 2.5 밀리 행과 4200 엔 코드 열을 사용하여 범주 형 데이터 집합을 학습 할 수 있습니다.