Tensorflow를 기반으로하는 오픈 소스 딥러닝 Tool
History
개발 기간 : 3년차
오픈 소스 공개 : 2019년 2월
현재 버전과 현황
: Comet.ml과의 통합
AI 실무자와 수천 명의 사용자와 여러 Fortune 100 대 기업이 지원하는 메타 머신 러닝 플랫폼
Comet을 활용하여 머신 러닝 실험을 추적, 비교, 설명 및 재현 할 수 있음
- 머신 러닝 모델 라이프 사이클을 간소화하여 실제 애플리케이션에 신뢰할 수있는 머신 러닝 모델을 구축 할 수 있도록 설계됨
다양한 프로그램들과 호환가능
: 텍스트 엔코더 중 BERT 추가
- 텍스트 기반 작업을 수행하기 위해 모델의 pre-training 또는 Transfer Learning의 형태로 사용됨
: 오디오 / 음성 기능 추가
기존에 없었던 오디오 / 음성기능을 사용
인코딩은 순차적 및 시계열 기능과 유사
- 푸리에 변환 및 그룹 지연 기능 추출을 적용 할 수 있게 됨
: H3 기능 추가
- 2018 년 Uber에서 제작하고 공개한 지구의 영역을 식별하는 공간 인덱싱 시스템
- 위치를 64 비트 정수로 인코딩하는 데 사용되며 Uber에서 지리 정보를 분석하는데 사용되어 왔음
- YAML 모델 정의 파일에 H3 기능을 추가하는 방법 예시
: 날짜 (시간) 기능 수정
- 날짜 및 타임 스탬프를 지원하는 간단한 방법을 추가
- 날짜 정보는 사용자 지정 패턴 또는 Python의 자동 날짜 구문 분석 기능을 통해 분석되며, 구성 요소 (년, 월, 일, 요일, 일,시, 분, 초)로 세분화됨.
: 시각화 API의 개선
- 원격 컴퓨터나 노트북 내에서 테스트가 어려웠던 점 개선
라이센스 : Apache License 2.0
2) Must Tab에 명시된 조건 하에 SW를 사용할 수 있음
Uber에서 소개하는 Ludwig Features
코딩 불필요 : 모델을 훈련시키고 예측을 얻는 데 사용하는 코딩 기술이 필요하지 않습니다.
일반성 : 딥 러닝 모델 설계에 대한 새로운 데이터 유형 기반 접근 방식으로 다양한 사용 사례에서 도구를 사용할 수 있습니다.
유연성 : 숙련 된 사용자는 모델 구축 및 교육을 광범위하게 제어 할 수 있으며 신규 사용자는 쉽게 사용할 수 있습니다.
확장성 : 새로운 모델 아키텍처 및 새로운 데이터 유형을 쉽게 추가 할 수 있습니다.
이해 : 딥 러닝 모델 내부는 종종 블랙 박스로 간주되지만 성능을 이해하고 예측을 비교하기 위해 표준 시각화를 제공합니다.
전문가가 아니어도 쉽게 사용할 수 있도록 설계되었지만, 동시에 전문가의 생산성도 높여줌
구조
엔코더는 원본 데이터를 입력값으로 받아 텐서에 매핑하고 디코더는 다시 텐서를 원본 데이터에 매핑한다.
중간에 있는 Combiner는 서로 다른 엔코더의 출력들을 연결하고 완전히 연결된 레이어를 통과하여 출력 디코더의 입력으로 최종 활성화를 제공
인터페이스를 구현하여 서로 다른 Feature에 다른 결합기를 조합할 수 있음
: 예를 들어, 텍스트 인코더와 카테고리 디코더를 결합함으로써, 사용자는 텍스트 분류기를 얻을 수있음
: 이미지 인코더와 텍스트 디코더를 결합하면 사용자가 이미지 캡션 모델을 얻을 수있게된다
Classic Regression
One Input : Multiple Encoder, One Output : Multiple Decoder 형식으로 지정시킬 수 있다.
모델의 매개변수 수정 가능
다른 데이터 유형의 처리를 위해 모델 추가 가능
다발 모델
현재 Ludwig에는 이진 값, 부동 숫자, 범주, 이산 시퀀스, 세트, 백, 이미지, 텍스트 및 시계열에 대한 인코더 및 디코더가 포함되어 있으며 사전 훈련 된 모델 (예 : 단어 포함)을 로드하는 기능이 있다.
향후 릴리스에서 지원되는 데이터 유형을 확장 할 계획
사용 방법(Flow)각각의 Input_feature의 구조를 변경하고 싶다면 다음과 같이 적어주면 된다. ->
: 예를 들어 다음과 같은 책에 대한 Dataset이 있을 경우
: Input 값, Output 값, 파라미터 조정을 다음과 같이 할 수 있다.
: 더 다양한 모델들에 대한 정의, Training, 파라미터를 찾으려면 -> https://uber.github.io/ludwig/user_guide/
: 더 다양한 예제를 보려면 -> https://uber.github.io/ludwig/examples/
: 다음과 같은 코드 한줄로 바로 Training 가능
ludwig train –data_csv path/to/file.csv –model_definition_file model_definition.yaml
: 이 예시의 구조는 Input 4개, 엔코더 4개, Output 2개, 디코더 2개, 컴파이너 1개가 된다.
: 제공되는 몇가지 옵션 중 하나를 선택하여 시각화 할 수 있음
: 더 다양한 시각화 옵션을 참고 하려면 -> https://uber.github.io/ludwig/user_guide/#visualizations
: 다음과 같은 코드 한줄로 바로 시각화 가능
ludwig visualize –visualization learning_curves –training_stats results/training_stats.json
이 코드로 다음과 같이 가로축이 Epoch, 세로축이 Loss와 Accuracy인 그래프를 출력할 수 있다.
: 데이터 집합에 예측과 비교할 근거 정보가 포함 된 경우이 명령을 실행하면 모델 예측 및 일부 테스트 성능 통계가 반환됨
ludwig predict –data_csv path/to/data.csv –model_path /path/to/model
: 이 결과 또한 다음과 같은 코드로 시각화 할 수 있음
ludwig visualize –visualization compare_performance –test_stats path/to/test_stats_model_1.json path/to/test_stats_model_2.json
API 제공
구성 요소(세부 모듈)
Train시 GPU 설정