AutonomicMachineLearning / MLFramework

1 stars 1 forks source link

기존 기계학습 기반 자율 기계학습 래퍼 기술 개발 #11

Open chatterboy opened 5 years ago

chatterboy commented 5 years ago

0210 교수님 피드백

chatterboy commented 5 years ago

황박사님과 얘기한 내용을 아래와 같이 간략히 정리함. image

chatterboy commented 5 years ago

목적

model editor에서 만든 그래프를 특정 프레임 워크에서 실행 가능한 형태로 변환하는 래퍼 구현

방법

프로세스

아래와 같은 프로세스로 처리됨

model editor --(1)--> wrapper --(2)-->

(1)에서는 model editor에서 만들어지는 그래프에 대한 정보는 <key,value> 형태로 출력됨. (2)에서는 그래프 정의에 대한 .onnx 파일이 생성됨. 그리고, 특정 프레임워크에서 .onnx 파일을 임포트하는 코드도 필요.

환경

python=3.6.8
tensorflow=1.12.0
onnx=1.4.1
protobuf=3.6.1 (from onnx)
numpy=1.16.1 (from onnx)
onnx-tf=1.2.1
PyYAML=3.13 (from onnx-tf)

.onnx 파일 생성 래퍼 구현

onnx에서는 아래와 같이 9가지 helper function을 지원 https://github.com/onnx/onnx/blob/master/docs/PythonAPIOverview.md#creating-an-onnx-model-using-helper-functions

  1. make_node : (...) -> NodeProto
  2. make_opsetid : (Text, int) -> OperatorSetIdProto
  3. make_operatorsetid : (...) -> OperatorSetIdProto
  4. make_graph : (...) -> GraphProto
  5. make_model : (GraphProto, **Any) -> ModelProto
  6. make_tensor : (...) -> TensorProto
  7. make_attribute : (...) -> AttributeProto
  8. make_empty_tensor_value_info : (Text) -> ValueInfoProto
  9. make_tensor_value_info : (...) -> ValueInfoProto

make_node(...) -> NodeProto

op_type (string): The name of the operator to construct
inputs (list of string): list of input names
outputs (list of string): list of output names
name (string, default None): optional unique identifier for NodeProto doc_string (string, default None): optional documentation string for NodeProto
domain (string, default None): optional domain for NodeProto. If it's None, we will just use default domain (which is empty)
**kwargs (dict): the attributes of the node.  The acceptable values are documented in :func:`make_attribute`.

op_type에 따라 필요한 **kwargs(attributes)를 식별하는 것이 중요

make_operatorsetid(...) -> OperatorSetIdProto = make_opsetid

domain (string): The domain of the operator set id
version (integer): Version of operator set id

make_graph(...) -> GraphProto

nodes
name
inputs
outputs
initializer=None
doc_string=None
value_info=[]

make_model(GraphProto, **Any) -> ModelProto

helper function에 대한 래퍼를 통해 onnx model definition 구축

특정 프레임워크로 .onnx 파일 임포트 래퍼 구현

텐서플로우

Caffe2

Pytorch

chatterboy commented 5 years ago

텐서플로우 래퍼를 위한 툴

onnx-tensorflow requirements