제퍼넷 로고

AI Weekly : 기계 프로그래밍 도구의 약속과 한계

시간

엔터프라이즈 데이터 기술 및 전략을 변환 2021.


소프트웨어 개발 및 유지 관리를 자동화하는 기계 프로그래밍은 AI에 의해 강화되고 있습니다. 그 동안 짓다 XNUMX 월의 개발자 컨퍼런스에서 Microsoft는 새로운 기능 OpenAI의 GPT-3 언어 모델을 탭하여 사람들이 수식을 선택할 수 있도록 지원하는 Power Apps에서. 인텔 제어 플래그 코드의 오류를 자율적으로 감지 할 수 있습니다. 그리고 Facebook 트랜스 코더 한 프로그래밍 언어에서 다른 프로그래밍 언어로 코드를 변환합니다.

컴퓨터 프로그래밍의 응용 범위는 광범위합니다. 그리고 컴퓨터가 어디에서나 보편화됨에 따라 고품질 코드에 대한 요구는 점점 더 많은 프로그래머를 직업으로 이끌고 있습니다. 코딩에 능숙 해지기위한 수년간의 연구 끝에 전문가들은 초록을 구체적이고 실행 가능한 프로그램으로 변환하는 방법을 배웁니다. 하지만 그들은 대부분의 업무 시간을 프로그래밍이 아님. 캠브리지 대학의 연구에 따르면 개발자의 노력의 절반 이상이 디버깅에 사용되며, 이로 인해 소프트웨어 산업은 연간 312 억 달러로 추정됩니다.

인텔 기계 프로그래밍 부서의 수석 AI 과학자 인 Justin Gottschlich에 따르면 AI 기반 코드 제안 및 검토 도구는 개발 비용을 크게 절감하는 동시에 코더가 더 창의적이고 덜 반복적 인 작업에 집중할 수 있도록합니다. Gottschlich는 기계 학습, 공식 방법, 프로그래밍 언어 및 컴파일러를 융합하여 정상적인 코딩 패턴을 감지하고 버그를 유발할 가능성이있는 코드의 이상을 식별하는 ControlFlag 작업을 주도하고 있습니다.

“머신 러닝 또는 AI 기반 프로그래밍 시스템 이전에 프로그래머는 생산성을 높이고, 논리 오류가 적은 코드를 생성하고, 소프트웨어 성능을 향상시키는 데 도움이되는 수십 개 (아마도 수백 개)의 도구를 가지고있었습니다. 그러나 이러한 시스템은 거의 모두 '규칙 기반'이었습니다.”라고 Gottschlich는 이메일을 통해 VentureBeat에 말했습니다. “유용하지만 규칙 기반 시스템은 기본적으로 프로그램 된 규칙에 따라 범위가 제한됩니다. 따라서 새로운 종류의 일이 발생하면 인간이 시스템을 업데이트해야합니다. 더욱이, 이러한 규칙 기반 시스템은 인코딩 된 규칙을 생성 할 때 항상 인적 오류가 발생하기 쉽습니다. 예를 들어, 프로그래머가 실수로 특정 유형의 버그를 찾기위한 규칙을 만들 수 있지만이를 찾기위한 규칙을 잘못 정의 할 수 있습니다. 규칙 시스템에 숨겨진이 버그는 영원히 발견되지 않을 수 있습니다.”

Gottschlich는 AI 기반 시스템이 과거의 규칙 기반 시스템에 비해 이점을 제공한다고 주장합니다. AI가 감독되지 않은 방식으로 스스로 학습하여 대규모 코드 데이터베이스를 활용할 수 있기 때문입니다. 비지도 학습을 사용하면 이전에 정의 된 레이블이없는 "알 수없는"데이터가 알고리즘에 제공됩니다. 시스템은 구조에서 학습하기 위해 데이터를 처리하여 데이터를 분류하도록 스스로 학습해야합니다.

예를 들어 ControlFlag는 프로그래밍 언어의 스타일 변화를 식별하기 위해 레이블이 지정되지 않은 1 억 줄 이상의 코드에 대해 학습되었습니다. TransCoder의 경우 2.8 만 개 이상의 리포지토리가 포함 된 GitHub 코퍼스를 분석하여 C ++, Java 및 Python간에 번역하는 방법을 배웠습니다. Microsoft는 버그 발견 프로그램 AzureDevOps 및 GitHub 리포지토리에서 13 명의 개발자가 작성한 47,000 만 개의 작업 항목 및 버그 데이터 세트 그리고 코드 리뷰 플랫폼 DeepCode의 알고리즘은 공개 오픈 소스 프로젝트에서 캡처 한 수십억 줄의 코드를 사용하여 학습되었습니다.

코드 생성과 증강

물론 전체 옷감에서 코드를 생성 할 수있는 AI 기반 코딩 도구와 프로그래머의 워크 플로를 보강하는 데는 차이가 있습니다. 후자가 더 일반적입니다. 같은 스타트 업 Tabine (이전 Codota) Python, C, HTML, Java, Scala, Kotlin 및 JavaScript로 스크립트를 제안하고 자동 완성하는 플랫폼을 개발하고 있습니다. 포니 코드 AI를 탭하여 코드의 정확성을 확인합니다. 인텔 기계 유추 코드 유사성 엔진 두 코드가 서로 다른 구조와 알고리즘을 사용하더라도 유사한 작업을 수행하는시기를 결정할 수 있습니다. 과 딥코드 전체 앱 코드 검토를위한 머신 러닝 기반 시스템 제공 — 아마존처럼.

“현재 우리는 소프트웨어 엔지니어가 작업의 속도와 정확성을 높일 수 있도록 AI 기반 도우미를 많이보고 있습니다. 그리고 자동화 도구보다 더 많은 보조 도구를 사용할 수있는 이유는 AI 기반 자동화가 아직 필요한 정확도 수준에 도달하지 못했기 때문입니다.”라고 Ponicode CEO Patrick Joubert는 VentureBeat에 말했습니다. “우리 업계는 아직 젊고 AI 기반 코드 생성기로 자동화의 잠재력을 이미 볼 수 있지만 자동 생성 된 코드는 여전히 유지 관리가 어렵고 전반적인 품질이 아직 올바른 표준을 충족하지 못한다는 점을 인정해야합니다. 일부 엔지니어는 AI 기반 자동화의 미래를 위해 노력하고 있지만 저와 저의 팀은 다른 많은 이해 관계자와 함께 오늘날 사용할 수있는 도구를 만드는 데 전념하고 있습니다. 몇 년 안에 개발 라이프 사이클의 모든 단계를 포괄 할 수있는 도구가 충분할 것이라고 믿습니다. "

Joubert에게 오늘날 가장 흥미로운 기계 프로그래밍 도구 카테고리는 자동 완성과 코드 분석입니다. Tabnine 및 Kite와 같은 자동 완성 시스템은 AI를 사용하여 의미를 분석하고 코드를 이해하고 코드의 의미 내용과 목적에 대한 감각으로 기능을 자동 완성합니다. Snyk 및 DeepCode와 같은 코드 분석 도구는 코드에서 취약점을 찾고이를 해결하기위한 조치를 제안하는 데 전념합니다. 종종 놀라운 속도와 정확성으로 해결됩니다.

“우리가 선도적 인 다국적 기업이 구축 한 소프트웨어를 포함하여 모든 소프트웨어에서 수많은 누수와 버그를 발견하면 [소프트웨어] 산업이 아직 성숙하지 않았다는 데 동의 할 수 있습니다. AI 기반 코딩 도구는 대부분 더 빠른 속도와 효율성 덕분에 개발자 경험을 향상시키고 역량을 강화하기위한 것입니다.”라고 Joubert는 덧붙였습니다. “이러한 개발자 중심의 이점 뒤에는 소프트웨어 엔지니어가 품질, 혁신 및 속도에 체계적으로 도달하는 산업 등급 소프트웨어를 구축 할 수 있도록 허용하는 중이라고 생각합니다. 자동 완성 기능은 [특히] 소프트웨어 엔지니어가 코드베이스에서 가장 복잡한 부분을 차지하고 긴 코드 문자열을 수동으로 작성해야하는 부담을 덜어줍니다. "

제한 사항

잠재력에도 불구하고 AI 기반 코드 생성기와 코딩 지원 도구에는 모두 한계가 있습니다. 예를 들어 GitHub에는 250 억 XNUMX 천만 개가 넘는 코드 저장소가 있지만 대부분의 데이터에는 주석이 없습니다. 코드가 수행하는 작업을 정확하게 설명하는 몇 가지 예만있어 레이블이 지정되지 않은 데이터에서 학습 할 수없는 시스템에 특별한 문제를 제기합니다.

이를 해결하기 위해 IBM은 최근 코드넷, 14 개의 프로그래밍 언어로 작성된 500 억 줄의 코드가 포함 된 55 만 개의 샘플 레이블 데이터 세트. 이 회사는 CodeNet에 추가 된 풍부한 주석이 특정 프로그래밍 작업에 특화된 다른 데이터 세트와 달리 다양한 작업 세트에 적합하다고 주장합니다. 이미 IBM의 연구원들은 코드 분류, 코드 유사성 평가 및 코드 완성을 포함하여 CodeNet으로 여러 실험을 수행했습니다.

"다음 XNUMX 년 동안 코드 의미론 이해 시스템이 향후 XNUMX 년 동안 기계 프로그래밍의 가장 중요한 영역 중 하나가 될 것으로 예상됩니다."라고 Joubert는 말했습니다. “머신 프로그래밍 시스템이 적용되는 도메인에 따라 다릅니다. 단위 테스트 또는 회귀 테스트와 같은 소규모 프로그램의 경우 전체 프로그램 합성기가 오늘날 현실입니다. 그러나 더 큰 프로그램의 경우 프로그래머의 도움 없이는 기계 프로그래밍 시스템이 잠재적 인 수천 또는 수백만 줄의 코드를 생성하는 것이 현재 계산적으로 어렵습니다.”

DeepCode의 공동 창립자이자 CEO 인 Boris Paskalev는 AI를 사용하여 몇 줄의 코드를 만드는 것이 "생산성 돌파구 라기보다는 장난감에 가깝다"고 말합니다. 자연어 처리와 같은 기술은 이해해야하는 단어와 구문에 고정 된 제한이 있기 때문에 텍스트에서 잘 작동하지만 코드는 동일하지 않다고 그는 주장합니다.

Paskalev는 VentureBeat에“소프트웨어 개발에 대한 공식적인 규칙이 없기 때문에 [프로그래밍]은 코드에 대한 완전한 이해와 버그없이 예상대로 작동하는 것을 생성하려는 개발자의 의도를 요구하는 기술입니다. “우리가 코드를 위해 기계 학습과 신경망을 사용하는 한, 우리는 여전히 '바퀴의 발명'단계에 있습니다. 기계 학습은 이미 코드에 매우 유용하다는 것이 입증되었지만 의미 론적 기계 학습-코드 표현을 통해 : 모든 의미 론적 사실, 변수, 전환 및 논리적 상호 관계가 명확하게 표현되고 학습 모델에 의해 고려되는지 확인합니다. "

Paskalev의 주장에 따르면 최근 연구에 따르면 AI가 코드를 안정적으로 생성하기 전에 가야 할 방법이 있다고합니다. XNUMX 월에는 연구원 팀 캘리포니아 대학 버클리, 코넬, 시카고 대학, 일리노이 대학 어 바나-샴페인 발표 , 자연어 사양에서 코드 생성을위한 벤치 마크입니다. 팀은 OpenAI의 GPT-2, GPT-3 및 GPT-3의 오픈 소스 버전을 포함하여 APPS에서 여러 유형의 모델을 테스트했습니다. GPT-네오. 실험에서 그들은 모델이 구문 오류 없이는 아니지만 더 쉬운 문제를 해결하는 코드를 생성하는 방법을 배울 수 있음을 발견했습니다. 입문 문제에 대한 GPT-59 솔루션의 약 3 %에 오류가있는 반면, 최고 성능의 모델 인 GPT-Neo는 10.15 %의 정확도를 달성했습니다.

Tabine CEO Dror Weiss는 VentureBeat에“전체 천에서 코드를 생성 할 때 일반적으로 의도를 지정하고 결과를 소비하는 데 어려움이 있습니다. “사용자 의도는 예제를 제공하거나 상위 수준 언어로 코드를 작성하거나 다른 수단을 통해 자연어로 지정할 수 있습니다. 그러나 대부분의 경우이 의도는 원하는 동작의 전체 사양을 제공하지 않습니다. 또한 생성 된 코드는 개발자가 생각했던 것과 다른 경로를 따를 수 있습니다. 따라서 개발자가 코드가 원하는 작업을 정확히 수행하는지 판단하기가 어려울 수 있습니다. "

TransCoder에서 작업 한 Facebook AI 연구원 Baptiste Rozière와 Marie-Anne Lachaux는 Tabine의 평가에 동의합니다. “여러 가지 코드 조각에 해당 할 수있는 불특정 자연어 문제 설명에서 올바른 코드를 생성하는 것은 본질적으로 어렵습니다. 더 쉬운 작업은 의사 코드 나 다른 언어로 작성된 코드와 같이 더 구체적이고 출력 코드에 더 가까운 입력에서 코드를 생성하는 것입니다.”라고 VentureBeat에 말했습니다. “사람의 감독없이 대량의 코드를 생성하는 방법을 채택하는 데있어 큰 장애물은 쉽게 사용할 수 있으려면 매우 신뢰할 수 있어야한다는 것입니다. 99 % 정확도로 메서드를 생성 할 수있는 도구조차도 수백 개의 함수로 구성된 작동 코드베이스를 생성하지 못할 것입니다. 코드 생성 프로세스의 속도를 높일 수 있지만 여전히 사람의 테스트와 개입이 필요합니다. "

Rozière와 Lachaux는 또한 모델이 자유도가 많고 다양한 출력을 생성 할 수있어 생성의 정확성을 제어하기 어렵 기 때문에 코드 생성과 관련된 작업이 일반적으로 분류 작업보다 훨씬 어렵다고 지적합니다. 또한 자연어에 비해 프로그래밍 언어는 작은 오류에 매우 민감합니다. 한 문자 차이로 인해 코드의 의미가 변경되고 출력에 오류가 발생할 수 있습니다.

Rozière와 Lachaux는“현재의 기계 학습 알고리즘은 더 큰 데이터 세트 없이는 인터뷰를 코딩하기 위해 인간의 성능과 일치시킬 수있을만큼 다른 문제에 충분히 일반화하지 못할 수 있습니다.”라고 Rozière와 Lachaux는 말했습니다.

잠재적 인 혜택

Paskalev는 개발자가 자연어 처리를 통해 "의미있는 구성 요소"또는 간단한 설명으로 전체 앱을 만들 수있을 때까지 최소 XNUMX 년에서 XNUMX 년이 걸릴 것이라고 생각합니다. 그러나 Gottschlich는 더 낙관적입니다. 그는 AI 기반 코딩 도구가 코드 작성에만 가치가있는 것이 아니라 기존 코드를 업그레이드하는 것과 같이 쉽게 매달려있는 결실을 맺을 때도 유용하다고 말합니다. 예를 들어 기존 코드베이스를 Java 또는 C ++와 같은 최신 또는보다 효율적인 언어로 마이그레이션하려면 소스 및 대상 언어에 대한 전문 지식이 필요하며 비용이 많이 듭니다. 호주 연방 은행 지출 COBOL에서 Java로 플랫폼을 전환하기 위해 750 년 동안 약 XNUMX 억 XNUMX 천만 달러.

“딥 러닝을 통해 소프트웨어 엔지니어의 일상을 어지럽히는 반복적이고 중복 된 작업 인 소규모 작업을 처리 할 수 ​​있습니다. 오늘날 AI는 소프트웨어 엔지니어를 지루한 작업에서 해방시키고 창의력을 떨어 뜨릴 수 있습니다.”라고 Gottschlich는 말했습니다. “인간의 마음은 우리 소프트웨어의 가장 복잡한 부분을 창조, 혁신 및 설계 할 때 훨씬 우월합니다. 이러한 흥미롭고 부가가치가 높은 작업 부분에서 속도를 높일 수있게하는 것은 오늘날 머신 러닝의 힘을 활용하는 가장 흥미로운 방법이라고 생각합니다.”

Joubert와 Weiss는 기계 프로그래밍의 잠재적 인 비즈니스 가치도 무시할 수 없다고 말합니다. 소프트웨어 개발 프로젝트의 약 19 % ~ 23 %가 실패하며 해당 통계는 지난 수십 년. Standish 그룹 발견 "도전 된"프로젝트 (예 : 범위, 시간 또는 예산 기대치를 충족하지 못하는 프로젝트)는 소프트웨어 프로젝트의 약 52 %를 차지합니다. 종종 사용자 참여 부족과 명확한 요구 사항이 벤치 마크를 놓친 원인이됩니다.

“우리는 AI를 사용하여 레거시 코드를 향상시키고 기존 자산이 산업 등급 표준에 도달하도록 돕는 수많은 새로운 도구를보고 있습니다. 우리는 개발자의 레거시 코드 관리 워크 플로우를 향상시키고 지난 50 년 동안 소프트웨어 산업에서 쌓아온 막대한 기술 부채를 줄이는 데 일조 할 수 있습니다.”라고 Joubert는 말했습니다. “개발자가 한 줄씩 코드를 작성하고 읽어야했던 시대는 지났습니다. 소프트웨어 개발 라이프 사이클의 다른 단계가 어떻게 변화하고 도구가 Kite 또는 Snyk가 달성 한 것과 동일한 수준에 도달하는지 보게되어 기쁩니다. AI를 활용하여 효율적이고 단일 목적이며 테스트되고 안전하며 문서화 된 코드를 손쉽게 빌드하면 소프트웨어 회사가 점진적인 가치와 혁신을 창출 할 수있는 방식이 크게 바뀔 것입니다. "

Weiss의 관점에서 AI 기반 코딩 도구는 Q & A 세션 및 반복적 인 코드 검토 피드백과 같은 개발자 간의 "비용이 많이 드는"상호 작용을 줄이는 동시에 프로젝트 온 보딩 프로세스를 단축 할 수 있습니다. “[이러한] 도구는 기업의 모든 개발자를 향상시킵니다. 그들은 조직의 집단 코드 인텔리전스를 가져와 개발 기간 동안 모든 개발자가 사용할 수 있도록합니다. 이를 통해 팀의 모든 개발자가 자신의 무게를 뛰어 넘을 수 있습니다.”라고 그는 말했습니다.

AI 커버리지의 경우 뉴스 팁을 카일 위 거스 — 그리고 반드시 구독하십시오 AI 주간 뉴스 레터 AI 채널을 북마크하고 기계.

읽어 주셔서 감사합니다,

카일 위 거스

AI 스태프 라이터

VentureBeat

VentureBeat의 사명은 기술 의사 결정권자가 혁신적인 기술과 거래에 대한 지식을 습득 할 수있는 디지털 타운 스퀘어가되는 것입니다. 당사 사이트는 데이터 기술 및 전략에 대한 필수 정보를 제공하여 조직을 이끌 때 안내합니다. 다음에 액세스 할 수 있도록 커뮤니티의 일원이되도록 귀하를 초대합니다.

  • 관심있는 주제에 대한 최신 정보
  • 뉴스 레터
  • 금지 된 사고 리더 콘텐츠 및 다음과 같은 소중한 이벤트에 대한 할인 된 액세스 변환 2021: 더 알아보기
  • 네트워킹 기능 등

회원 가입

코인 스마트. 유로파 최고의 비트 코인-보르 스
출처 : https://venturebeat.com/2021/06/18/ai-weekly-the-promise-and-limitations-of-machine-programming-tools/

spot_img

최신 인텔리전스

spot_img