본문 바로가기
ML 기초공부

데이터과학 머신러닝에서 파이썬(Python) 을 선호하는 이유​

by EasyGPT 2023. 12. 15.
반응형

데이터과학 머신러닝에서 파이썬(Python) 을 선호하는 이유

파이썬은 스크립트 작성, 프로세스 자동화, 웹개발, 일반 애플리케이션 등 여러 소프트웨어 개발 영역에서 오랫동안 인기를 얻고 있습니다.

최근에는 머신러닝 언어로도 주목받고 있는데, 머신러닝 분야에서 파이썬이 주목받는 이유를 살펴보자.

프로그래밍이 단순

첫 번째 이유는 파이썬의 성공요인과 관련.

이 언어는 간소.

처음 만들 때부터 주된 목표가 읽고 쓰기 쉬운 언어였습니다.

코드는 쓰는 것보다 읽는 경우가 많고, 특히 작업자가 바뀌는 경우 더 그렇습니다.

예를 들어 여러 제3자 구성요소를 사용하거나 사용자 비즈니스 로직이 복잡한 머신러닝 애플리케이션을 넘겨받아 계속 개발해야 하는 경우, 가능한 한 읽고 이해하기 편한 언어로 작성하는 것이 도움이 됩니다.

좋은 파이썬코드는 이런 요건을 충족하며 다른 언어보다 뛰어남.

머신러닝 라이브러리가 다양

파이썬이 머신러닝 툴로 인기를 얻는 두 번째 이유는 사용할 수 있는 풍부한 머신러닝 라이브러리와 프레임워크.

유명한 Scikit-learn부터 TensorFlow, CNTK, Apache Spark MLlib 등 유명 머신러닝 및 Deep Learning 프레임워크 대부분이 파이썬에서 직접 사용할 수 있거나 파이썬 API를 지원합니다.

훌륭한 성능을 제공

파이썬의 풍부한 라이브러리 생태계를 활용하면 명령 한 번으로 여러 프레임워크를 작업 공간에 설치할 수 있습니다.

파이썬 자체가 이를 적극적으로 지원.

파이썬은 여러 머신러닝 프레임워크에 필요한 플랫폼전용 바이너리를 배포하기 쉽도록 라이브러리패키징메커니즘을 변경.

Anaconda 같은 배포판은 파이썬 생태계 밖에서 바이너리 의존성 등의 문제를 해결하는 자체 패키징 메커니즘이 있습니다.

https://smartstore.naver.com/dopza/products/4569179898

 
 

CBD오일 : 돕자몰

CBD

smartstore.naver.com

머신러닝에 파이썬을 즐겨 쓰는 이유

메모리를 대신 관리한다

파이썬 같은 고수준 언어가 제공하는 추상화와 이것을 활용하는 작업은 여러 다른 영역에서 장점.

예를 들어 파이썬은 개발자 대신 세부적 메모리 관리를 수행하므로 결과적으로 개발자가 개발에만 집중할 수 있는 정신적 여유를 제공.

list, dictionary, tuple 등 파이썬에 내장된 구성물과 데이터 추상화는 모두 파이썬 런타임을 통해 메모리를 관리.

Java도 같은 방식이지만 파이썬은 이보다 정확하고 사용법도 단순.

머신러닝 앱은 파이썬의 메모리관리 구조를 실제 연산 작업보다는 애플리케이션의 로직 또는 데이터흐름 정리 용도로 더 활용.

연산 작업이 많이 필요한 Lifting 대부분은 NumPy 같은 외부 라이브러리가 처리.

하지만 언어와 런타임이 제공하는 추상화 덕분에 이들을 위한 메모리관리 작업이 외부로 드러나는 것보다 여러 계층 아래에서 자동으로 처리된다.

파이썬이 내부에서 메모리를 관리하는 방식은 자세히 들여다볼 가치가 있다.

파이썬은 효율성 대신에 사용 편의성을 택했지만 상황에 따라 그 방식이 명확하지 않을 때가 있다.

따라서 만약 완벽하게 최고의 성능을 내고 싶다면 결국 ‘뚜껑을 열고’ 더 낮은 수준의 추상화로 직접 작업해야 한다.

이와 관련된 내용을 Theano 머신러닝 라이브러리 웹사이트(http:// deeplearning.net/software/theano/tutorial/python-memory-management.html)에서 확인할 수 있다.

성능을 최적화하는 또 다른 방법은 Cython

이 유틸리티 라이브러리를 통해 파이썬코드를 C로 변환할 수 있다.

그러면 C의 메모리관리 및 데이터구성물에 직접 액세스할 수 있다.

파이썬 자체는 느려도 문제가 없다 많은 사람이 파이썬을 “편리하지만 빠르지는 않다”고 말한다.

대부분 맞는 말이다.

파이썬은 개발 편의성을 얻는 대신 파이썬 자체의 성능은 다소 희생했다.

그렇다면 가장 빠른 언어가 아닌 파이썬을 왜 머신러닝 같은 연산 집약적 작업에 사용하는 걸까?

대답은 단순하다.

연산 집약적 작업을 처리하는 것은 파이썬이 아니기 때문이다.

파이썬 머신러닝 애플리케이션에서 수행하는 실제 연산작업 대부분은 C, C++, 자바로 작성한다.

파이썬은 라이브러리를 통해 이를 정리하고 상호작용할 뿐이다.

결국 파이썬에서 구동하는 애플리케이션은 설정 및 해체, 명령 및 제어, 구성요소 간의 조정과 Logging 및 보고 등 일반적으로 성능에 민감하지 않다.

단, 애플리케이션이 파이썬과 라이브러리 영역 사이를 자주 오간다면 성능 문제로 이어질 수 있다.

파이썬이 외부 라이브러리를 사용하기 때문이다.

따라서 개발자는 파이썬과 외부 API 사이의 이동 횟수를 최소화하는 것이 좋다.

또한 필요하다면 싸이썬(파이썬을 C로 변환), PyPy(JIT 가속 파이썬 코드용) 등을 통해 순수한 파이썬 코드의 속도를 높이는 방법도 있다.

결국 파이썬이 머신러닝에 매력적 이유는 단순히 한 가지 이유가 아니다.

학습과 사용이 쉽고, 광범위한 머신러닝 사용례를 다루는 서드파티 라이브러리 생태계를 가졌으며, 수행 중인 작업에 걸맞은 성능을 제공하기 때문이다.

이런 특성이 파이썬을 머신러닝에 가장 적합한 언어로 만든다.

1990년 Python을 처음 만든 귀도 반 로섬이 지난 2018년 7월 12일 이른바 ‘자비로운 종신 독재자(Benevolent Dictator For Life, BDFL)’ 역할을 사임하면서 파이썬 진영을 충격에 빠뜨렸다.

당시 그는 사임 이유로 최신 언어 표현식 기능 추가 문제를 둘러싼 갈등을 꼽았다.

이제 반 로섬은 파이썬 개발 전면에서 물러나지만 이후에 파이썬에는 아무 문제가 없을 것으로 확신했다.

올해 62세인 그는 현재 드롭박스의 수석 엔지니어로 일하고 있다.

반 로섬을 만나 근황과 파이썬의 미래에 대해 직접 들어봤다.

https://amzn.to/3RDyIj1

 
 

Keurig K-Iced Single Serve Coffee Maker - Brews Hot and Cold - Gray

The Keurig® K-Iced™ coffee maker. Enjoy refreshingly delicious iced coffee and full-flavored hot coffee from one multitalented coffee maker. Brew the perfect coffee for any craving, mood, or mouthwatering moment. Always easy, always right. It’s all in the blue Brew Over Ice button. One push, and ...

amzn.to

BDFL을 그만둔 이유?

반 로섬: 물론 ‘종신’이라는 말은 그냥 농담이다.

독재라는 말도 마찬가지다.

이미 몇 년 전부터 은퇴를 고민했다.

건강문제도 있었고, 파이썬 커뮤니티를 이끄는 막중한 책임도 부담스러웠다.

이 자리에 있으면 파이썬 언어의 철학을 수없이 되풀이해 설명해야 하고, 항상 합리적으로 행동해야 한다.

물론 은퇴의 중요한 계기는 극심한 논란을 일으킨 특정 기능 개선 제안이었다.

내가 이를 수용하자 사람들이 트위터 같은 소셜 미디어에서 개인적으로 정말 가슴 아픈 이야기를 하고 다녔다.

그렇게 서운한 말을 했던 사람 중에는 코어파이썬 개발자도 있었다.

이들이 더는 나를 신뢰하지 않는다고 느꼈다.

논란이 된 개선제안은 PEP(Python Enhancement Proposal) 572였다.

무엇이 문제였나?

그 제안은 assignments이 expression evaluation의 일부로 발생하도록 하는 새 syntax에 관한 것이다.

따져 보면 사소한 기능 추가에 불과하다.

개발자가 필요할 때 표현식중간에 할당구문을 삽입하면 된다.

이미 다른 언어가 이를 부가 기능으로 지원한다.

C, C++가 그렇고, 자바와 자바스크립트 역시 마찬가지다.

특정상황에서 코딩을 쉽게 해주고, 중복을 제거해 읽기도 쉬워진다.

그런데 많은 사람이 이 기능 제안이 파이썬의 설계 철학과 원리에 부합하지 않는다고 생각한 것 같다.

이 제안의 다른 문제는 처음 제안을 했던 사람들이 자초한 측면이 있다.

초기 몇 개 버전은 심각한 문제가 있었고 이 때 파이썬 창시자가 말하는 사임 이유와 파이썬의 미래 Paul Krill│

심지어 그 제안의 기본취지에 공감하는 사람조차 이를 반대했다.

그러나 근본적으로 이는 사소한 구문 변경이다.

근본적인 무엇이 전혀 아니다.

이 기능은 파이썬의 어느 버전에 포함되나?

1년 6개월 후에 나올 파이썬 3.8이다. .

후임 BDFL이 임명되나?

앞으로 파이썬 커뮤니티는 어떻게 운영되나?

유감이지만 나는 그에 대해 할 말이 없다.

코어 개발자 100~200명으로 구성된 그룹에 새로운 거버넌스 방식과 누가 지휘를 맡을 것인지 알아서 결정하도록 했다.

이들은 기존까지 파이썬 관련 다른 문제를 처리했던 것처럼 그 문제에 대한 논의를 즉시 시작했다.

기나긴 논쟁이 이제 시작된 것이다.

좋은 소식이라면 결론을 내는 일정에는 합의했다는 점이다.

내가 알기로는 제안 시한은 2018년 10월 1일이다.

그 후 2018년 11. 1일까지 거버넌스 구조에 대한 최종결정을 내린다.

2019년 1월 1일까지는 지휘를 맡을 사람을 실제 선출, 임명하거나, 아니면 이에 관한 거버넌스 문서를 따르기로 했다.

예를 들어 1인 BDFL 체제로 결론이 난다면, 이는 10월 1일까지 BDFL을 선출하는 방법, 재임 기간, 탄핵 방식 등을 자세히 서술해 확정한다는 의미다.

아마 2019년 1월 1일이면 실제 후임자가 임명될 것으로 본다.

파이썬 개발에 관여하는 이들 그룹은 누구인가?

다른 사람보다 영향력이 큰 코어 개발자가 여럿 포함돼 있다.

그중 한 명은 오랜 경력을 가진 멋진 사나이 브렛 캐넌이다.

내 멘토였던 팀 피터도 있다.

그는 파이썬 개발 비공식 가이드라인인 ‘the Zen of Python’ 저자이기도 하다.

배리 워소 역시 코어 개발자 중 한 명이다.

당신은 앞으로 파이썬에 어떤 방식으로 관여하나?

기고자나 코어 개발자로 남을 것이다.

가끔 코드를 쓰고 리뷰도 한다.

코어 개발자, 특히 초보 코어 개발자와 여성 및 소수자 멘토링에도 집중할 계획이다.

코어 개발자 집단의 다 양성은 내가 추구하는 주요 목표 가운데 하나다.

BDFL을 그만두면 파이썬 애호가들이 놀라 이탈하지 않을까?

그렇게 생각하지 않는다.

파이썬 커뮤니티는 매우 건강하고, 코어 팀은 매우 역동적 이다.

이들이 이번 혼란을 극복하지 못하거나 앞으로 수십 년간 파이썬 언어를 발전시키지 못 할 것으로 생각했다면, 나는 사퇴하지 않았을 것이다.

나의 사임은 작은 사건에 불과하다.

우리는 여전히 성공적인 미래 릴리즈를 준비하고 있고 개발 프로세스도 계속 발전시키고 있다.

https://amzn.to/3RDyIj1

지난 몇 년 동안 파이썬 개발 프로세스가 어떻게 발전해 왔나? 앞으로는 어떻게 변할 것으로 보나?

파이썬 언어는 계속 변화하고 있다.

우리는 언어와 라이브러리에 새 기능을 추가해 왔 다.

가장 큰 변화라면 역시 인기가 높아진 것이다.

5년 전만 해도 파이썬은 이만큼 영향력 있는 언어가 아니었다.

그러나 이후 데이터과학자를 위한 주요 툴로 큰 인기를 얻었다.

동시에 코어 개발자 입장에서는 완벽한 결정을 내려야 한다는 부담이 더 커졌다.

그러나 전반적으로 일을 수행하는 방식, 개발하는 방식, 파이썬 언어를 내놓는 방식은 매우 안정적이다.

예를 들어 릴리즈 매니저가 있고, 주요 릴리즈 사이에는 1년 6개월 정도의 기간을 둔다.

버그 픽스 릴리즈는 필요할 때 몇 개월 혹은 분기마다 이루어진다.

파이썬 개선 제안 프로세스도 안정적이다.

이번 PEP 관련 논란이 큰 대립처럼 보이는 것은 소셜 미디어를 통해 크게 확산한 것이 한 이유라고 본다.

몇 년 전 코드 관리를 Mercurial에서 Git으로 전환한 것을 빼면, 매우 안정적으로 운영됐고 특별한 이상징후는 없다고 생각한다.

https://smartstore.naver.com/dopza/products/4569179898

반응형

댓글