사용 가능한 라이브러리에 대한 문의


#1

제출한 소스 코드는 tensorflow, pytorch, keras 중 하나로 불러오기가 가능해야 하며 python inference.pytest 예측 결과 재현이 가능하고, python train.py 로 모델 생성이 재현 가능해야 합니다. 예측 방법과 모델 학습 방법은 가급적 이와 같이 부탁드리며, 다른 방법의 경우 README.md에 설명을 추가 바랍니다.

그러면 sklearn이나 mxnet등의 사용이 불가능한 것인지 궁금합니다. 추가로, 형태소 분석기나 gensim 등 다른 라이브러리의 사용 가능여부와 그 라이센스 범위도 궁금합니다.


#2

@znmean
오픈 소스로 공개해야 하기 때문에 사용할 수 있는 라이브러리도 오픈 소스 라이선스의 의무사항을 만족해야 합니다.
Apache2.0 라이선스와 호환 가능한 오픈소스 라이브러리를 선택해 사용해 주세요. 문의하신 것 중에서 gensim은 LGPL2.1 라이선스로 링킹 방식에 따라 사용이 불가능할 수 있습니다.(dynamic linking으로 별도의 라이브러리로는 사용 가능하지만 static linking으로는 사용 불가능)


#3

결국 이렇게 검색하거나 사용하는 라이브러리를 라이선스를 검사하면서 개발해야겠군요…

https://github.com/search?q=license%3Aapache-2.0+machine+learning&type=Repositories

근데 이미
pip install liccheck
liccheck -s strategy.ini -r ./requirements.txt

이렇게 해서보니 Apache License 2.0 가 아닌거가 몇게 있는데요
tqdm (4.28.1): [‘MPLv2.0, MIT Licences’, ‘Mozilla Public License 2.0 (MPL 2.0)’, ‘MIT’]
numpy (1.15.0): [‘BSD’]
Keras (2.2.4): [‘MIT’]
h5py (2.8.0): [‘BSD’]

결국 제가 이말을 이해를 잘 못하는 것 같아요 “호환 가능한”

아 ㅋ 공지에 “GPL 2.0, LGPL 2.1, MPL 1.1” 이건 "사용이 불가능할 수 있습니다."거군요 공지 잘 보겠습니다. 감사합니다.


#4

오픈소스 라이브러리의 활용 범위에 대해 부연 설명드립니다.

모델 생성과 생성된 모델의 로드 그리고 예측은 tensorflow, pytorch, keras로 진행해야 합니다. mxnet이나 기타 다른 머신러닝 라이브러리를 이 과정에 사용하는 것은 불가능 합니다. 다만 데이터 분석 등의 목적으로 이러한 라이브러리를 사용하는 것은 무방하며, 이를 통해 얻은 직관이나 모델이 아닌 하이퍼 파라미터 값 등을 사용하는 것은 가능합니다.

전처리 단계에서 tensorflow, pytorch, keras를 제외한 머신러닝(딥러닝을 포함한) 기능을 제공하는 라이브러리로 분류, 회귀 등 머신러닝 기능을 사용하는 것도 불가능합니다. 그러나 비정형 텍스트 전처리에 필요한 가공 또는 변환은 문제의 특성상 불가피하기 때문에 이러한 목적의 라이브러리 활용은 가능합니다. 예를 들어 형태소 분석기 사용 혹은 nltk, gensim 등을 활용한 워드 임베딩, 데이터 벡터라이즈를 위한 scipy, numy의 활용 등은 텍스터 데이터 전처리를 위한 가공이라고 볼 수 있습니다.

마지막으로 대회의 결과를 공유하기 위해 오픈소스 정책을 취하다 보니, 참가자들도 오픈소스에 대한 이해가 일정 부분 필요하게 되었습니다. 다소 복잡한 부분이 있지만 좋은 취지로 이해해주시길 부탁드리겠습니다.

감사합니다.

cc. @znmean @abcd123


#5

안녕하세요, 라이센스와 관하여 질문 드립니다.

그러나 비정형 텍스트 전처리에 필요한 가공 또는 변환은 문제의 특성상 불가피하기 때문에 이러한 목적의 라이브러리 활용은 가능합니다 . 예를 들어 형태소 분석기 사용 혹은 nltk, gensim 등을 활용한 워드 임베딩, 데이터 벡터라이즈를 위한 scipy, numy의 활용 등은 텍스터 데이터 전처리를 위한 가공이라고 볼 수 있습니다.

이 부분이 애매해서 다시 한번 문의 드립니다.
앞서 말씀해 주셨던 것처럼 gensim 의 경우에는 LGPL 이기 때문에 Apache License 와는 호환이 불가능할 것 같은데, 활용 가능하다고 하셨던 부분은 어떻게 사용하였을 때 사용이 가능하다는 말씀이신가요?

따로 프로젝트를 분리하던가 하는 방식(분리하게 되더라도 중간 결과물이 GPL 혹은 LGPL 등에 묶이기 때문에 Apache 불가능할 것이라 생각되지만)이 아니더라도 GPL 2.0, LGPL 2.1 등의 라이센스를 갖는 라이브러리들이 비정형 텍스트 전처리 과정에서만 사용되었다면 정상적인 결과물로 인정해 주신다는 건가요?

애매해서 한번 더 질문 드립니다.

감사합니다.

cc. @recotech


#6

@retriever89
두가지로 나눠 보면 좀 더 이해가 쉬울 것 같습니다.

첫 번째는 참가자의 코드는 오픈소스 공개가 필수이기 때문에 오픈소스 공개에 어려운 라이브러리들은 사용이 근본적으로 불가능합니다. 예를 들어 gensim의 경우는 static linking 방식으로 사용이 불가능하고요.

두 번째는 오픈소스의 활용 범위입니다. ML/DL 등과 관련된 기능은 tensorflow, pytorch, keras를 이용해서 구현하는 것만 가능하고 다른 라이브러리로 사용이 불가능 하지만, 그 목적이 비정형 텍스트 전처리에 필요한 가공 또는 변환이라면 부분적으로 허용이 됩니다. 예를 들어 형태소 분석기 사용 혹은 nltk, gensim 등을 활용한 워드 임베딩, 데이터 벡터라이즈를 위한 scipy, numy의 활용 등은 텍스터 데이터 전처리를 위한 가공이라고 볼 수 있습니다.

애매할 수 있는 부분이니 잘 이해가 안 되는 게 있다면 편하게 질문해주세요.