[태그:] tensorflow

  • blas gemm launch failed tensorflow 2.0

    전에 어떻게 해결했는지 모르겠지만, gtx 1060에 model prediction 을 실행하면 BLAS GEMM 어쩌구 나온다. 아래와 같이 cuda 버전 문제이다.

    apt-get purge libcublas10 libcublas-dev
    apt-get install libcublas10=10.2.1.243-1 libcublas-dev=10.2.1.243-1 cuda-libraries-10-1 cuda-libraries-dev-10-1
    https://github.com/tensorflow/tensorflow/issues/37233

  • tensorflow 2.1.0 compile

    tensorflow 2.1.0 compile

    남는 시간에 tensorflow 2.0을 컴파일에 도전했다. 현실은 실패하여 2.1로 목표 재설정. docker 이미지를 사용하면 쉬운데, avx2를 지원하지 않는 CPU를 사용하여 선택할 수 없다. 직접 컴파일하지 않는 한 사용할 수 없다. 최근 개발 이미지를 찾아보니 cuda 10.1, python3 이었다. nvidia-driver는 여러 버전이 설정 되었는데, host pc 버전으로 구동하나 보다. bazel 버전은 3.0이다.

    bazel 버전을 2.1.0에 맞는 0.27로 바꿨다. compile 하면 약 6시간 정도 걸린다. 문제가 몇 개 있었다. 전에 램 12GB로 컴파일을 성공했다. 지금 8GB로 해보니, 10,000번 스텝넘어 동작을 멈추고 실패했다. 램을 사기 애매하여 일단 SWAP을 30GB 만들어 컴파일에 성공했다. 그런데 상당히 느리다. 결국 램 8GB를 구매했다. 그런데도 firefox를 띄우고 컴파일하면 에러난다.

    메뉴얼은 host에 CUDA를 설치할 필요 없다고 했다. nvidia-driver를 440 버전으로 업데이트 하면 CUDA 10.2를 기본 설치한다. 이게 뭐가 문제냐면 docker gpu 이미지가 10.2을 지원하지 않아 gpu를 사용할 수 없다. 일단 nvidia docker가 10.1 이미지를 띄우면 cuda 10.0으로 내릴 수 없다. 드라이버도 같이 내려야 하는데, 사용 중이어 수정할 수 없나보다. 실패하여 cuda 10.1 이미지를 사용했다. 그러나 nvidia-driver-440으로 cuda 10.1을 사용할 수 없다. 결국 host pc 드라이버를 438로 내렸다.

    nvidia driver version 440.82는 CUDA 10.2를 기본 설치한다.

    tensorflow 1.12 버전은 host pc driver 440으로 잘 구동한다. 왜 9.0은 실행하는데 10.x 버전을 실행하지 못하는지 모르겠다.

    3일째 이 미친 짓을 하고 있다. 뭘 위해서 인지 모르겠다. 지금까지 버린 인건비와 전기 요금을 생각하면 PC 1/3대를 구입했다.

    결국 다음 조합으로 컴파일에 성공했다.

    • ubuntu 18.04
    • nvidia-driver 435, cuda 10.1
    • docker image: latest-devel-gpu-py3, cuda 10.1, python 3.

    컴파일 거의 마지막 단계에 host python 버전 2와 guest python 버전 3 환경 설정값 다름으로 컴파일을 실패했다. 여기를 참조하여 간단하게 tensorRT를 사용하지 않도록 설정했다. 어차피 내 그래픽 카드는 지원하지 않는다. python2 버전 이미지로 해도 될 듯 하다.

    ERROR: /tensorflow_src/tensorflow/tensorflow/python/keras/api/BUILD:129:1: Executing genrule //tensorflow/python/keras/api:keras_python_api_gen_compat_v2 failed (Exit 1)
    Traceback (most recent call last):
      File "/root/.cache/bazel/_bazel_root/51f904752746bc15a93061eb1cc3b8cc/execroot/org_tensorflow/bazel-out/host/bin/tensorflow/python/keras/api/create_tensorflow.python_api_2_keras_python_api_gen_compat_v2.runfiles/org_tensorflow/tensorflow/python/tools/api/generator/create_python_api.py", line 27, in <module>nvidia.com/compute/cuda/repos/ubuntu1804/x86_64  cuda-npp-10-1 10.1.243-1 [54.9 MB]
    Get:9 https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64  cuda-libraries-10-1 10.1.243-1 [2588 B]
    Get:10 https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64  cuda-nvrtc-dev-10-1 10.1.243-1 [8812 B]
    
        from tensorflow.python.tools.api.generator import doc_srcs
      File "/root/.cache/bazel/_bazel_root/51f904752746bc15a93061eb1cc3b8cc/execroot/org_tensorflow/bazel-out/host/bin/tensorflow/python/keras/api/create_tensorflow.python_api_2_keras_python_api_gen_compat_v2.runfiles/org_tensorflow/tensorflow/python/__init__.py", line 85, in <module>
        from tensorflow.python.ops.standard_ops import *
      File "/root/.cache/bazel/_bazel_root/51f904752746bc15a93061eb1cc3b8cc/execroot/org_tensorflow/bazel-out/host/bin/tensorflow/python/keras/api/create_tensorflow.python_api_2_keras_python_api_gen_compat_v2.runfiles/org_tensorflow/tensorflow/python/ops/standard_ops.py", line 117, in <module>
        from tensorflow.python.compiler.tensorrt import trt_convert as trt
      File "/root/.cache/bazel/_bazel_root/51f904752746bc15a93061eb1cc3b8cc/execroot/org_tensorflow/bazel-out/host/bin/tensorflow/python/keras/api/create_tensorflow.python_api_2_keras_python_api_gen_compat_v2.runfiles/org_tensorflow/tensorflow/python/compiler/tensorrt/__init__.py", line 22, in <module>
        from tensorflow.python.compiler.tensorrt import trt_convert as trt
      File "/root/.cache/bazel/_bazel_root/51f904752746bc15a93061eb1cc3b8cc/execroot/org_tensorflow/bazel-out/host/bin/tensorflow/python/keras/api/create_tensorflow.python_api_2_keras_python_api_gen_compat_v2.runfiles/org_tensorflow/tensorflow/python/compiler/tensorrt/trt_convert.py", line 28, in <module>
        from tensorflow.compiler.tf2tensorrt import wrap_py_utils
      File "/root/.cache/bazel/_bazel_root/51f904752746bc15a93061eb1cc3b8cc/execroot/org_tensorflow/bazel-out/host/bin/tensorflow/python/keras/api/create_tensorflow.python_api_2_keras_python_api_gen_compat_v2.runfiles/org_tensorflow/tensorflow/compiler/tf2tensorrt/wrap_py_utils.py", line 28, in <module>
        _wrap_py_utils = swig_import_helper()
      File "/root/.cache/bazel/_bazel_root/51f904752746bc15a93061eb1cc3b8cc/execroot/org_tensorflow/bazel-out/host/bin/tensorflow/python/keras/api/create_tensorflow.python_api_2_keras_python_api_gen_compat_v2.runfiles/org_tensorflow/tensorflow/compiler/tf2tensorrt/wrap_py_utils.py", line 24, in swig_import_helper
        _mod = imp.load_module('_wrap_py_utils', fp, pathname, description)
      File "/usr/lib/python3.6/imp.py", line 243, in load_module
        return load_dynamic(name, filename, file)
      File "/usr/lib/python3.6/imp.py", line 343, in load_dynamic
        return _load(spec)
    ImportError: /root/.cache/bazel/_bazel_root/51f904752746bc15a93061eb1cc3b8cc/execroot/org_tensorflow/bazel-out/host/bin/tensorflow/python/keras/api/create_tensorflow.python_api_2_keras_python_api_gen_compat_v2.runfiles/org_tensorflow/tensorflow/compiler/tf2tensorrt/_wrap_py_utils.so: undefined symbol: _ZN15stream_executor14StreamExecutor18EnablePeerAccessToEPS0_
    ----------------
    Note: The failure of target //tensorflow/python/keras/api:create_tensorflow.python_api_2_keras_python_api_gen_compat_v2 (with exit code 1) may have been caused by the fact that it is a Python 2 program that was built in the host configuration, which uses Python 3. You can change the host configuration (for the entire build) to instead use Python 2 by setting --host_force_python=PY2.
    
    If this error started occurring in Bazel 0.27 and later, it may be because the Python toolchain now enforces that targets analyzed as PY2 and PY3 run under a Python 2 and Python 3 interpreter, respectively. See https://github.com/bazelbuild/bazel/issues/7899 for more information.
    ----------------
    Target //tensorflow/tools/pip_package:build_pip_package failed to build
    Use --verbose_failures to see the command lines of failed build steps.
    INFO: Elapsed time: 26069.299s, Critical Path: 545.35s
    INFO: 26668 processes: 26668 local.
    FAILED: Build did NOT complete successfully

    드디어 2.1 컴파일을 성공했다. 한 번 컴파일 끝내기 위해 7시간씩 썼다. 총 5번은 실패했고 6번째 성공했다. 업데이트 전 제대로 실행됨을 확인했다. update 하고 실행하니 또 에러 뜬다. cuda 10.2 문제임을 여기에서 확인했다. 다시 버전을 내렸다.

    2020-04-28 11:13:07.200201: E tensorflow/stream_executor/cuda/cuda_blas.cc:238] failed to create cublas handle: CUBLAS_STATUS_NOT_INITIALIZED
    2020-04-28 11:13:07.202605: E tensorflow/stream_executor/cuda/cuda_blas.cc:238] failed to create cublas handle: CUBLAS_STATUS_NOT_INITIALIZED
    2020-04-28 11:13:07.202635: W tensorflow/stream_executor/stream.cc:2041] attempting to perform BLAS operation using StreamExecutor without BLAS support
    2020-04-28 11:13:07.202674: W tensorflow/core/common_runtime/base_collective_executor.cc:217] BaseCollectiveExecutor::StartAbort Internal: Blas GEMM launch failed : a.shape=(10000, 4), b.shape=(4, 1024), m=10000, n=1024, k=4
    	 [[{{node dense_1/MatMul}}]]
    Traceback (most recent call last):
      File "200428getSortedValuev3.py", line 198, in <module>
        model2.fit(x=fixed_sentence_by_index, y=training_result_asarray, epochs=10000, verbose=2, validation_split=0.3, callbacks=callbacks_list, batch_size=10000, shuffle=True)
      File "/usr/local/lib/python3.6/dist-packages/keras/engine/training.py", line 1239, in fit
        validation_freq=validation_freq)
      File "/usr/local/lib/python3.6/dist-packages/keras/engine/training_arrays.py", line 196, in fit_loop
        outs = fit_function(ins_batch)
      File "/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/keras/backend.py", line 3727, in __call__
        outputs = self._graph_fn(*converted_inputs)
      File "/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/eager/function.py", line 1551, in __call__
        return self._call_impl(args, kwargs)
      File "/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/eager/function.py", line 1591, in _call_impl
        return self._call_flat(args, self.captured_inputs, cancellation_manager)
      File "/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/eager/function.py", line 1692, in _call_flat
        ctx, args, cancellation_manager=cancellation_manager))
      File "/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/eager/function.py", line 545, in call
        ctx=ctx)
      File "/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/eager/execute.py", line 67, in quick_execute
        six.raise_from(core._status_to_exception(e.code, message), None)
      File "<string>", line 3, in raise_from
    tensorflow.python.framework.errors_impl.InternalError:  Blas GEMM launch failed : a.shape=(10000, 4), b.shape=(4, 1024), m=10000, n=1024, k=4
    	 [[node dense_1/MatMul (defined at /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:3009) ]] [Op:__inference_keras_scratch_graph_1128]
    
    Function call stack:
    keras_scratch_graph

    미국 국방부가 리눅스로 무기 체계를 개발한다고 한다. 오픈소스를 사용하려면 이런 저런 문제점을 모두 직접 해결해야 한다. 정말 없는 길을 만들어 간다. 기업이 왜 오픈소스로 서비스하지 않는지 알 만하다. 구글같은 능력있는 회사정도 되야 오픈소스로 서비스 할 만하다. 누가 오픈소스로 서비스 한다고 하면 능력자라 인식해야겠다.

  • tag 형식 제한기 작성 후기

    최근 몇 일간 태그를 제한하는 스크립트, 코드를 작성했다. 프로세스는 좀 복잡하다. 시운전자마다 태그를 지멋대로 작성한다. 태그를 잘 분석하면 좋은데, 지 멋대로라 의미있는 정보를 쉽게 얻어내기 어렵다. 오타도 많고 단어도 지 멋대로 순서로 작성한다. 그나마 잘못한 부분을 보아야 하는데 잘 보이지도 않는다. 없던 작업이라 대부분 고민해서 직접 만들었다. 시간이 정말 많은 사람이라면 취미로 프로그램 작성을 가져봄을 추천한다. 이건 뭐 정확한 법칙도 없어 모두 케바케다. stack overflow가 셧다운 되었을 때 사람들이 그 난리를 쳤는지 이해된다.

    위치,원래 태그,수정한 태그
    ***,****_UM_PRS_***_***,***_UM_PRS_***_***
    ***,****_UM_PRS_***_***,****_UM_PRS_***_***
    ***,***_PRS_UM_***_***_***,***_UM_PRS_***_***_***
    ***,***_PRS_UM_***_***_***,***_UM_PRS_***_***_***

    위 결과를 보면 원래 태그가 UM_PRS, PRS_UM 두 방식으로 표현된다. 두 방식을 모두 UM_PRS로 수정했다. 틀려도 같이 틀린다. 대충 잘 동작한다고 믿고 싶다. 몇 만개 중에서 30%만 수정한 태그에 답을 달았다. %를 올릴려면 한참 입력해야 한다. 현실은 시궁창이니…

  • openai gym cart pole 설정

    openai gym cart pole 설정

    PC를 거실에 설치하고 docker로 tensorflow를 설정했다. docker가 쉽고 간편하여 다 좋은데 그래픽 사용자 인터페이스를 지원하지 않는다. gym을 설정하기 어렵다. 찾다보니 다음 순서로 진행하면 동영상 파일을 만든다. 아직 맛만 보아 뭔지 잘 모르겠으나, 일단 에러없는 화면을 보니 안심된다.

    • pip로 gym 관련 모듈 설치
    • python3-opengl 모듈 설치
    • xvfb 모듈 설치
    • jupyter notebook 설치
    • python에서 wrappers로 실행.

    jupyter notebook을 xvfb-run 아래와 같이 실행한다.

    xvfb-run -s "-screen 0 1400x900x24" jupyter notebook --allow-root

    여기를 웹으로 접속하여 아래 코드를 실행하면 cartPole을 동영상으로 녹화한다.

    import gym
    from gym import wrappers
    
    env = gym.make('CartPole-v1')
    env = wrappers.Monitor(env, "./gym-results-Cart", force=True)
    observation = env.reset()
    for _ in range(1000):
        env.render()
        action = env.action_space.sample()
        observation, reward, done, info = env.step(action)
        if done: break
    env.close()

  • keras로 키워드 분석((5+1)/5)

    정말 간단한 LSTM으로 정확도 80%대까지 올렸다. 23,000개 데이터를 7,000번 학습시겼다. 정확하게 하려면 모든 카테고리 데이터를 동일하게 맞추고, 내부 태그를 정확하게 정리해야 하는데 시간없어 하지 못했다.

    [21:33:28]>cat process | head -100
    로드한 모델 vocab 최대값은 2611
    로드한 모델 vectror 크기는 5
    인티저 값은 ['AUX' 'DATA' 'EMER' 'END_A' 'END_B' 'ERROR' 'PROX_INTLK' 'SOL_A' 'SOL_B']
    출력 크기는 9
    Model: "sequential_1"
    _________________________________________________________________
    Layer (type)                 Output Shape              Param #   
    =================================================================
    embedding_1 (Embedding)      (None, 10, 5)             13055     
    _________________________________________________________________
    lstm_1 (LSTM)                (None, 32)                4864      
    _________________________________________________________________
    dropout_1 (Dropout)          (None, 32)                0         
    _________________________________________________________________
    dense_1 (Dense)              (None, 16)                528       
    _________________________________________________________________
    dropout_2 (Dropout)          (None, 16)                0         
    _________________________________________________________________
    dense_2 (Dense)              (None, 9)                 153       
    =================================================================
    Total params: 18,600
    Trainable params: 5,545
    Non-trainable params: 13,055
    _________________________________________________________________
    Train on 18757 samples, validate on 4690 samples
    Epoch 1/1000
     - 5s - loss: 2.1842 - acc: 0.0887 - val_loss: 2.1683 - val_acc: 0.0908
    Epoch 00001: acc improved from -inf to 0.08866, saving model to ./saved_network_weightv2.h5
    Epoch 2/1000
     - 4s - loss: 2.1073 - acc: 0.1674 - val_loss: 2.1181 - val_acc: 0.2066
    Epoch 00002: acc improved from 0.08866 to 0.16735, saving model to ./saved_network_weightv2.h5
    Epoch 3/1000
     - 4s - loss: 2.0133 - acc: 0.2660 - val_loss: 2.0448 - val_acc: 0.2652
    Epoch 02019: acc improved from 0.88084 to 0.88122, saving model to ./saved_network_weightv2.h5
    Epoch 02129: acc improved from 0.88122 to 0.88218, saving model to ./saved_network_weightv2.h5
    Epoch 02190: acc improved from 0.88218 to 0.88292, saving model to ./saved_network_weightv2.h5
    Epoch 02542: acc improved from 0.88292 to 0.88394, saving model to ./saved_network_weightv2.h5
    Epoch 02805: acc improved from 0.88394 to 0.88426, saving model to ./saved_network_weightv2.h5
    Epoch 02928: acc improved from 0.88426 to 0.88474, saving model to ./saved_network_weightv2.h5
    Epoch 03050: acc improved from 0.88474 to 0.88607, saving model to ./saved_network_weightv2.h5
    Epoch 03836: acc improved from 0.88607 to 0.88650, saving model to ./saved_network_weightv2.h5
    Epoch 03940: acc improved from 0.88650 to 0.88762, saving model to ./saved_network_weightv2.h5
    Epoch 04337: acc improved from 0.88762 to 0.88810, saving model to ./saved_network_weightv2.h5
    

    전에 텍스트 0이 인덱스 번호 47번인가 그랬다. 아무래도 이상하여 확이해보니 zero padding에는 0으로 넣었다. 0을 숫자로 처리할지, zero padding 값으로 처리할 지 결정해야 한다. 일단 검증할 경우에는 0을 강제로 입력했다.

    입력한 단어는 ['M', 'YD', '4', 'PIN', 'SHIFT', '1', '전진', '단', 'ZERO!!', 'ZERO!!']
    내 예상은 이번 텍스트가 0.87확율로 [4]임.
    인티저 값은 ['AUX' 'DATA' 'EMER' 'END_A' 'END_B' 'ERROR' 'PROX_INTLK' 'SOL_A' 'SOL_B']
    출력 크기는 9
    1/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    M
    69
    [69]
    2/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    YD
    1
    [69, 1]
    3/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    4
    11
    [69, 1, 11]
    4/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    10
    21
    [69, 1, 11, 21]
    5/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    ST
    0
    [69, 1, 11, 21, 0]
    6/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    PIN
    154
    [69, 1, 11, 21, 0, 154]
    7/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    후진
    42
    [69, 1, 11, 21, 0, 154, 42]
    8/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    단
    13
    [69, 1, 11, 21, 0, 154, 42, 13]
    9/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    ZERO!!
    zero index는 0
    [69, 1, 11, 21, 0, 154, 42, 13, 0]
    10/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    zero index는 0
    [69, 1, 11, 21, 0, 154, 42, 13, 0, 0]
    입력한 단어는 ['M', 'YD', '4', '10', 'ST', 'PIN', '후진', '단', 'ZERO!!', 'ZERO!!']
    내 예상은 이번 텍스트가 0.84확율로 [4]임.
    인티저 값은 ['AUX' 'DATA' 'EMER' 'END_A' 'END_B' 'ERROR' 'PROX_INTLK' 'SOL_A' 'SOL_B']
    출력 크기는 9
    1/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    M
    69
    [69]
    2/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    OTR
    91
    [69, 91]
    3/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    랙
    28
    [69, 91, 28]
    4/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    10
    21
    [69, 91, 28, 21]
    5/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    번방
    121
    [69, 91, 28, 21, 121]
    6/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    차종
    6
    [69, 91, 28, 21, 121, 6]
    7/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    20
    51
    [69, 91, 28, 21, 121, 6, 51]
    8/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    이상
    8
    [69, 91, 28, 21, 121, 6, 51, 8]
    9/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    ZERO!!
    zero index는 0
    [69, 91, 28, 21, 121, 6, 51, 8, 0]
    10/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    zero index는 0
    [69, 91, 28, 21, 121, 6, 51, 8, 0, 0]
    입력한 단어는 ['M', 'OTR', '랙', '10', '번방', '차종', '20', '이상', 'ZERO!!', 'ZERO!!']
    내 예상은 이번 텍스트가 1.00확율로 [5]임.
    인티저 값은 ['AUX' 'DATA' 'EMER' 'END_A' 'END_B' 'ERROR' 'PROX_INTLK' 'SOL_A' 'SOL_B']
    출력 크기는 9
    1/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    M
    69
    [69]
    2/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    70
    36
    [69, 36]
    3/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    ST
    0
    [69, 36, 0]
    4/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    주변
    292
    [69, 36, 0, 292]
    5/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    설비
    322
    [69, 36, 0, 292, 322]
    6/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    비상
    63
    [69, 36, 0, 292, 322, 63]
    7/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    정지
    73
    [69, 36, 0, 292, 322, 63, 73]
    8/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    ZERO!!
    zero index는 0
    [69, 36, 0, 292, 322, 63, 73, 0]
    9/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    zero index는 0
    [69, 36, 0, 292, 322, 63, 73, 0, 0]
    10/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    zero index는 0
    [69, 36, 0, 292, 322, 63, 73, 0, 0, 0]
    입력한 단어는 ['M', '70', 'ST', '주변', '설비', '비상', '정지', 'ZERO!!', 'ZERO!!', 'ZERO!!']
    내 예상은 이번 텍스트가 1.00확율로 [2]임.
    인티저 값은 ['AUX' 'DATA' 'EMER' 'END_A' 'END_B' 'ERROR' 'PROX_INTLK' 'SOL_A' 'SOL_B']
    출력 크기는 9
    1/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    M
    69
    [69]
    2/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    보조제어
    리스트에 없는 단어 입력함. 다시 입력하세요
    2/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    보조
    26
    [69, 26]
    3/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    제어
    38
    [69, 26, 38]
    4/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    GP
    228
    [69, 26, 38, 228]
    5/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    동작
    29
    [69, 26, 38, 228, 29]
    6/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    선택
    14
    [69, 26, 38, 228, 29, 14]
    7/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    16
    448
    [69, 26, 38, 228, 29, 14, 448]
    8/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    ZERO!!
    zero index는 0
    [69, 26, 38, 228, 29, 14, 448, 0]
    9/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    zero index는 0
    [69, 26, 38, 228, 29, 14, 448, 0, 0]
    10/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    zero index는 0
    [69, 26, 38, 228, 29, 14, 448, 0, 0, 0]
    입력한 단어는 ['M', '보조', '제어', 'GP', '동작', '선택', '16', 'ZERO!!', 'ZERO!!', 'ZERO!!']
    내 예상은 이번 텍스트가 1.00확율로 [0]임.
    인티저 값은 ['AUX' 'DATA' 'EMER' 'END_A' 'END_B' 'ERROR' 'PROX_INTLK' 'SOL_A' 'SOL_B']
    출력 크기는 9
    1/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    M
    69
    [69]
    2/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    70
    36
    [69, 36]
    3/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    RH
    9
    [69, 36, 9]
    4/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    피더
    457
    [69, 36, 9, 457]
    5/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    전후진
    리스트에 없는 단어 입력함. 다시 입력하세요
    5/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    LS
    75
    [69, 36, 9, 457, 75]
    6/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    이상
    8
    [69, 36, 9, 457, 75, 8]
    7/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    ZERO!!
    zero index는 0
    [69, 36, 9, 457, 75, 8, 0]
    8/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    zero index는 0
    [69, 36, 9, 457, 75, 8, 0, 0]
    9/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    zero index는 0
    [69, 36, 9, 457, 75, 8, 0, 0, 0]
    10/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    zero index는 0
    [69, 36, 9, 457, 75, 8, 0, 0, 0, 0]
    입력한 단어는 ['M', '70', 'RH', '피더', 'LS', '이상', 'ZERO!!', 'ZERO!!', 'ZERO!!', 'ZERO!!']
    내 예상은 이번 텍스트가 1.00확율로 [5]임.
    인티저 값은 ['AUX' 'DATA' 'EMER' 'END_A' 'END_B' 'ERROR' 'PROX_INTLK' 'SOL_A' 'SOL_B']
    출력 크기는 9
    1/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    M
    69
    [69]
    2/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    80
    209
    [69, 209]
    3/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    LH
    5
    [69, 209, 5]
    4/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    카울
    리스트에 없는 단어 입력함. 다시 입력하세요
    4/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    PIN
    154
    [69, 209, 5, 154]
    5/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    LS
    75
    [69, 209, 5, 154, 75]
    6/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    이상
    8
    [69, 209, 5, 154, 75, 8]
    7/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    ZERO!!
    zero index는 0
    [69, 209, 5, 154, 75, 8, 0]
    8/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    zero index는 0
    [69, 209, 5, 154, 75, 8, 0, 0]
    9/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    zero index는 0
    [69, 209, 5, 154, 75, 8, 0, 0, 0]
    10/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    zero index는 0
    [69, 209, 5, 154, 75, 8, 0, 0, 0, 0]
    입력한 단어는 ['M', '80', 'LH', 'PIN', 'LS', '이상', 'ZERO!!', 'ZERO!!', 'ZERO!!', 'ZERO!!']
    내 예상은 이번 텍스트가 1.00확율로 [5]임.
    인티저 값은 ['AUX' 'DATA' 'EMER' 'END_A' 'END_B' 'ERROR' 'PROX_INTLK' 'SOL_A' 'SOL_B']
    출력 크기는 9
    1/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    M
    69
    [69]
    2/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    60
    134
    [69, 134]
    3/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    RH
    9
    [69, 134, 9]
    4/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    CAM
    179
    [69, 134, 9, 179]
    5/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    YD
    1
    [69, 134, 9, 179, 1]
    6/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    제품
    50
    [69, 134, 9, 179, 1, 50]
    7/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    감지
    53
    [69, 134, 9, 179, 1, 50, 53]
    8/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    1
    7
    [69, 134, 9, 179, 1, 50, 53, 7]
    9/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    ZERO!!
    zero index는 0
    [69, 134, 9, 179, 1, 50, 53, 7, 0]
    10/10 단어 입력
    끝내려면 END!!를 입력
    마지막까지 0을 채우려면 ZERO!!를 입력
    zero index는 0
    [69, 134, 9, 179, 1, 50, 53, 7, 0, 0]
    입력한 단어는 ['M', '60', 'RH', 'CAM', 'YD', '제품', '감지', '1', 'ZERO!!', 'ZERO!!']
    내 예상은 이번 텍스트가 1.00확율로 [6]임.
    인티저 값은 ['AUX' 'DATA' 'EMER' 'END_A' 'END_B' 'ERROR' 'PROX_INTLK' 'SOL_A' 'SOL_B']
    출력 크기는 9