AMD는 AI 코딩 사본에 대한 전체적인 접근 방식을 취합니다

Date:

코딩 비서 좋다 github copilot 그리고 Codeium 이미 있습니다 소프트웨어 엔지니어링 변경. 기존 코드와 엔지니어의 프롬프트를 기반으로,이 보조자는 일종의 고급 자동 완성 역할을하는 새로운 라인 또는 전체 코드 덩어리를 제안 할 수 있습니다.

언뜻보기에 결과는 매력적입니다. 코딩 어시스턴트는 이미 변화하고 있습니다 일하다 일부 프로그래머와 코딩 방식을 변환합니다 지도 받은. 그러나 이것은 우리가 대답해야 할 질문입니다. 이런 종류의 생성 AI는 영광스러운 도움 도구 일뿐입니다. 아니면 실제로 개발자의 워크 플로에 상당한 변화를 가져올 수 있습니까?

~에 고급 마이크로 장치 (AMD), 우리는 CPU, GPU 및 기타 컴퓨팅 칩을 설계하고 개발합니다. 그러나 우리가하는 많은 일은 운영 체제 및 기타 고객 소프트웨어를 자체 하드웨어와 완벽하게 통합하는 저수준 소프트웨어를 만들기 위해 소프트웨어를 개발하는 것입니다. 실제로 AMD 엔지니어의 약 절반은 소프트웨어 엔지니어이며, 이는 우리와 같은 회사에게는 드문 일이 아닙니다. 당연히, 우리는 소프트웨어 개발 프로세스에 대한 AI의 잠재력을 이해하는 데 관심이 있습니다.

AI가 가장 도움이 될 수있는 곳과 방법을 이해하기 위해 최근 소프트웨어를 개발하는 방법에 대한 몇 가지 깊은 다이빙을 수행했습니다. 우리가 발견 한 것은 놀랍습니다. 조수 코딩 조수의 종류의 종류는 코드 라인을 파열시키는 데 능숙합니다. 실제로 소프트웨어 엔지니어의 업무의 작은 부분입니다. 우리의 개발자들은 새로운 도구와 기술 학습, 문제를 일으키고 문제를 디버깅하고 소프트웨어 테스트를 포함한 다양한 작업에 대부분의 노력을 소비합니다.

우리는 각 단계마다 개별 비서를 넘어서 자율적 인 소프트웨어 개발 기계로 묶기를 희망합니다. 물론 루프에 사람이 있습니다.

코드 필롯의 빵과 버터 코드를 작성하는 코드 작업에도 조수는 수익이 줄어든다는 것을 알았습니다. 기본 작업을 수행하는 주니어 개발자에게는 매우 도움이되었지만 전문화 된 작업을 수행 한 더 많은 선임 개발자에게는 도움이되지 않았습니다.

인공 지능을 진정으로 변형적인 방식으로 사용하기 위해 우리는 단지 복제물로 제한 할 수 없다고 결론지었습니다. 우리는 전체 소프트웨어 개발 수명주기에 대해 더 전체적으로 생각하고 각 단계에서 가장 도움이되는 모든 도구를 조정해야했습니다. 예, 우리는 특정 코드베이스에 사용 가능한 코딩 사본을 미세 조정하기 위해 노력하므로 선임 개발자조차도 더 유용 할 것입니다. 그러나 우리는 또한 코드를 검토하고 최적화하고 버그 보고서 생성과 같은 소프트웨어 개발의 다른 부분을 수행하기 위해 대형 언어 모델을 조정합니다. 그리고 우리는 LLMS를 넘어 생성 AI를 넘어 범위를 넓히고 있습니다. 우리는 그것을 사용하는 것을 발견했습니다 당신이 가진 차별적– 컨텐츠를 생성하는 대신 분류하는 것은 테스트의 혜택이 될 수 있습니다. 특히 비디오 게임이 소프트웨어 및 하드웨어에서 얼마나 잘 실행되는지 확인할 수 있습니다.

다양한 시각적 아티팩트가있는 비디오 게임 스크린의 8 가지 이미지 저자와 그의 동료들은 비디오 게임을하고 AMD 하드웨어에서 이미지가 렌더링되는 방식에서 인공물을 찾기 위해 차별적 및 생성 AI의 조합을 훈련 시켰으며, 이는 회사가 펌웨어 코드에서 버그를 찾는 데 도움이됩니다. 이미지 테스트 : AMD; 게임 게시자의 원본 이미지.

단기적으로, 우리는 소프트웨어 개발 수명주기의 각 단계에서 AI를 구현하는 것을 목표로합니다. 우리는 이것이 향후 몇 년 동안 25 %의 생산성 향상을 줄 것으로 기대합니다. 장기적으로, 우리는 각 단계마다 개별 보조원을 넘어서 자율 소프트웨어 개발 기계로 묶기를 희망합니다.

AI를 구현하기위한이 끊임없는 길을 따라 가면 AI 사용이 도입 할 수있는 가능한 위협과 위험을 신중하게 검토해야한다는 것을 알고 있습니다. 이러한 통찰력을 갖추면 AI를 최대한 활용할 수 있습니다. 우리가 지금까지 배운 내용은 다음과 같습니다.

코딩 조수의 잠재력과 함정

기럽 연구 개발자는 GitHub Copilot을 사용하여 생산성을 두 배로 늘릴 수 있다고 제안합니다. 이 약속에 매료 된 우리는 2023 년 9 월 AMD의 개발자들에게 Copilot을 이용할 수있게 해주었다. 반년 후, 우리는 그 엔지니어들을 조사하여 보조의 효과를 결정했다.

또한 엔지니어의 GitHub Copilot 및 그룹화 사용자를 활성 사용자 (매일 Copilot을 사용한)와 가끔 사용자 (일주일에 몇 번 Copilot을 사용한) 중 하나로 그룹화 한 사용자를 모니터링했습니다. 우리는 대부분의 개발자가 활성 사용자가 될 것으로 예상했습니다. 그러나 활성 사용자의 수는 50 % 미만이라는 것을 발견했습니다. 우리의 소프트웨어 검토에 따르면 AI는 더 간단한 프로그래밍 작업을 수행하는 주니어 개발자에게 생산성이 측정 할 수있는 것으로 나타났습니다. 우리는 수석 엔지니어가 복잡한 코드 구조를 연구하면서 생산성이 훨씬 낮은 것을 관찰했습니다. 이것은 일치합니다 연구 관리 컨설팅 회사 인 McKinsey & Co.

우리가 엔지니어들에게 상대적으로 낮은 부 필롯 사용법에 대해 물었을 때, 75 %는 제안이 코딩 요구와 더 관련이 있다면 Copillot을 훨씬 더 많이 사용할 것이라고 응답했습니다. 이것은 Github의 결과와 반드시 모순되는 것은 아닙니다. AMD 소프트웨어는 매우 전문화되었으므로 공개적으로 사용 가능한 데이터를 사용하여 교육을받은 Github Copilot과 같은 표준 AI 도구를 적용하는 것이 도움이되지 않을 것임을 이해할 수 있습니다.

예를 들어, AMD의 그래픽-소프트웨어 팀은 GPU를 컴퓨터 시스템, 저수준 소프트웨어에 통합하여 GPU를 운영 체제에 통합하고 GPU의 그래픽 및 기계 학습 작업을 가속화하기위한 소프트웨어를 컴퓨터 시스템에 통합하기 위해 저수준 펌웨어를 개발합니다. 이 모든 코드는 GPU를 사용하기위한 게임, 화상 회의 및 브라우저와 같은 응용 프로그램의 기반을 제공합니다. AMD의 소프트웨어는 회사 및 제품에 고유하며 표준 레퍼 필트는 독점 데이터에서 작동하도록 최적화되지 않았습니다.

이 문제를 극복하려면 내부 데이터 세트를 사용하여 도구를 교육하고 AMD 사용 사례에 중점을 둔 특수 도구를 개발해야합니다. 우리는 현재 AMD 사용 사례를 사용하여 사내 조교를 교육하고 있으며 이것이 개발자 간의 채택과 생산성을 모두 향상시키기를 희망합니다. 그러나 설문 조사 결과로 인해 개발자의 업무가 얼마나 새로운 코드 라인을 작성하고 있습니까? 이 질문에 답하기 위해 소프트웨어 개발 수명주기를 자세히 살펴 보았습니다.

소프트웨어 개발 수명주기 내부

AMD의 소프트웨어 개발 수명주기는 5 단계로 구성됩니다.

우리는 a로 시작합니다 정의 신제품의 요구 사항 또는 기존 제품의 새 버전. 그런 다음 소프트웨어 건축가 설계 정의 된 요구 사항을 충족하기위한 모듈, 인터페이스 및 기능. 다음으로 소프트웨어 엔지니어는 작업합니다 개발건축 설계에 따라 제품 요구 사항을 충족시키기위한 소프트웨어 코드 구현. 이것은 개발자가 새로운 코드 라인을 작성하는 단계이지만, 이것이 전부는 아닙니다. 또한 기존 코드를 리팩터링하고 작성한 내용을 테스트 한 후 코드 검토에 적용 할 수 있습니다.

다음으로, 시험 단계는 본격적으로 시작됩니다. 특정 기능을 수행하기 위해 코드를 작성한 후 개발자는 단위 또는 모듈 테스트를 작성합니다. 프로그램은 새 코드가 필요에 따라 작동하는지 확인합니다. 대규모 개발 팀에서는 많은 모듈이 동시에 개발되거나 수정됩니다. 더 큰 시스템에 통합 될 때 새 코드가 문제를 일으키지 않음을 확인하는 것이 필수적입니다. 이것은 통합 테스트로 확인되며 일반적으로 밤마다 실행됩니다. 그런 다음 전체 시스템은 회귀 테스트를 통해 실행되어 새로운 기능이 포함되기 전에 수행 한 것과 같이 작동하는지 확인하고, 기존 및 새로운 기능을 확인하기위한 기능 테스트 및 전체 시스템의 신뢰성과 견고성을 확인하기위한 응력 테스트입니다.

마지막으로 모든 테스트를 성공적으로 완료 한 후 제품이 출시되어 지원하다 단계.

개발 및 테스트 단계에서도 새로운 코드를 개발하고 테스트하는 것은 개발자 작업의 약 40 % 만 차지합니다.

새로운 표준 릴리스 AMD 아드레날린 그래픽-소프트웨어 패키지는 평균 6 개월이 걸리며, 3-6 개월의 또 다른 집약적 인 지원 단계가 이어집니다. 우리는 각 단계에 얼마나 많은 엔지니어가 관여했는지 결정하기 위해 그러한 릴리스를 추적했습니다. 개발 및 테스트 단계는 가장 자원 집약적이었으며 60 명의 엔지니어가 각각 참여했습니다. 20 명의 엔지니어가 지원 단계, 10 명, 정의에서 5 명에 참여했습니다.

개발 및 테스트에는 다른 단계보다 더 많은 손이 필요했기 때문에 우리는 개발 및 테스트 팀을 조사하여 매일 시간을 보내는 것을 이해하기로 결정했습니다. 개발 및 테스트 단계에서도 새로운 코드를 개발하고 테스트하는 것은 개발자 작업의 약 40 % 만 차지합니다.

소프트웨어 엔지니어의 날의 다른 60 %는 혼합입니다. 시간의 약 10 %는 새로운 기술을 배우고, 문제를 일으키고 디버깅하는 데 20 %, 작성한 코드를 검토하고 최적화하는 데 거의 20 %, 문서 코드에 대한 약 10 %가 소비됩니다.

이러한 작업 중 다수는 고도로 전문화 된 하드웨어 및 운영 체제에 대한 지식이 필요합니다. 이 검토는 AI의 소프트웨어 개발 수명주기를 크게 향상시키기 위해 기본 코드를 넘어서도 범위를 확대해야한다는 또 다른 상기시켜주었습니다.

비디오 게임 등을위한 AI

다음과 같은 생성 AI 큰 언어 모델 그리고 이미지 생성기요즘 많은 방송 시간이 있습니다. 그러나 우리는 당신이 가진 차별적상당한 생산성 향상을 제공 할 수 있습니다. 생성 AI는 새로운 컨텐츠를 만드는 것을 목표로하지만 차별적 AI는 이미지가 고양이인지 개인지 식별하거나 스타일을 기반으로 유명한 작가를 식별하는 등 기존 컨텐츠를 분류합니다.

우리는 테스트 단계, 특히 기능 테스트에서 소프트웨어의 동작이 다양한 실제 조건 하에서 테스트되는 기능 테스트에서 광범위하게 차별적 AI를 사용합니다. AMD에서는 많은 제품, 운영 체제, 응용 프로그램 및 게임에서 그래픽 소프트웨어를 테스트합니다.

녹색 그리드 배경의 핸드 모양의 회로 보드 옆에 손자국.

예를 들어, 우리는 20,000 개가 넘는 “황금”이미지의 AMD 수집 데이터 세트 (결함이없고 테스트를 통과 할 수있는 2,000 개의 왜곡 된 이미지)에 대한 깊은 컨볼 루션 신경망 (CNN) 세트를 교육했습니다. CNN은 이미지에서 시각적 인공물을 인식하고 개발자에게 버그 보고서를 자동으로 제출하는 법을 배웠습니다.

차별적 AI와 생성 AI를 결합하여 비디오 게임을 자동으로 플레이하여 테스트 생산성을 높였습니다. 화면 메뉴 이해 및 탐색, 게임 세계 탐색 및 캐릭터 이동, 게임 목표와 행동을 이해하는 등 게임을하는 등 많은 요소가 있습니다.

게임은 동일하지 않지만 기본적으로 액션 중심 게임에서 작동하는 방식입니다. 게임은 일반적으로 옵션을 선택할 수있는 텍스트 화면으로 시작합니다. 우리는 생성 AI 대형 비전 모델을 사용하여 화면의 텍스트를 이해하고 메뉴를 탐색하여 구성하고 게임을 시작합니다. 재생 가능한 캐릭터가 게임에 들어가면 차별적 AI를 사용하여 화면에서 관련 객체를 인식하고, 친근하거나 적의 플레이 할 수없는 캐릭터가 어디에 있는지 이해하고 각 캐릭터를 올바른 방향으로 지시하거나 특정 행동을 수행합니다.

게임을 탐색하기 위해, 우리는 몇 가지 기술 (예 : 생성 AI)을 사용하여 게임 내 목표를 읽고 이해하고 미니 맵 및 지형 기능을 결정하기위한 차별적 AI를 사용합니다. 생성 AI는 수집 된 모든 정보를 기반으로 최상의 전략을 예측하는 데 사용될 수도 있습니다.

전반적으로 기능 테스트 단계에서 AI를 사용하면 수동 테스트 노력이 15 % 감소했습니다. 테스트 할 수있는 시나리오가 20 % 증가했습니다. 그러나 우리는 이것이 단지 시작이라고 믿습니다. 또한 코드 검토 및 최적화, 문제 사기 및 디버깅 및 코드 테스트의 더 많은 측면을 지원하는 AI 도구를 개발하고 있습니다.

전체 채택에 도달하고 도구가 함께 작동하고 개발자의 환경에 원활하게 통합되면 전체 팀 생산성이 25 % 이상 증가 할 것으로 예상됩니다.

검토 및 최적화를 위해 자체 코드 기반 및 문서로 기존 생성 AI 모델을 미세 조정하여 소프트웨어 엔지니어를위한 특수 도구를 만들고 있습니다. 우리는이 미세 조정 된 모델을 사용하여 휴먼 유사 코드 검토를 제공하고 기회의 플래그를 표시하는 목표로 복잡성, 코딩 표준 및 모범 사례를위한 기존 코드를 자동으로 검토하기 시작했습니다.

마찬가지로, 심사 및 디버깅의 경우, 개발자가 문제를 이해하고 해결하기 위해 어떤 종류의 정보가 필요한지 분석했습니다. 그런 다음이 단계를 돕기위한 새로운 도구를 개발했습니다. 심사 및 디버그 정보의 검색 및 처리를 자동화했습니다. 관련 컨텍스트가있는 일련의 프롬프트를 큰 언어 모델에 공급하여 해당 정보를 분석하여 문제의 근본 원인을 찾을 수있는 워크 플로의 다음 단계를 제안했습니다. 또한 생성 AI를 사용하여 개발자의 워크 플로에 통합 된 방식으로 특정 기능에 대한 장치 및 모듈 테스트를 작성할 계획입니다.

이 도구는 현재 일부 팀에서 개발되고 파일럿이 진행되고 있습니다. 전체 채택에 도달하고 도구가 함께 작동하고 개발자의 환경에 원활하게 통합되면 전체 팀 생산성이 25 % 이상 증가 할 것으로 예상됩니다.

통합 된 AI 에이전트 미래를 향해 조심스럽게

25 %의 절감 효과는 위험없이 오지 않습니다. 우리는 AI 사용에 관한 몇 가지 윤리적, 법적 문제에 특히주의를 기울이고 있습니다.

첫째, 우리는 AI 제안을 사용하여 다른 사람의 지적 재산을 위반하는 것에주의를 기울입니다. 모든 생성 AI 소프트웨어 개발 도구는 반드시 데이터 모음, 일반적으로 소스 코드를 기반으로 구축되며 일반적으로 오픈 소스입니다. 우리가 사용하는 모든 AI 도구는 타사 지적 재산을 존중하고 정확하게 사용해야하며,이 도구는이 지적 재산을 위반하는 콘텐츠를 출력해서는 안됩니다. 이 위험을 준수하기 위해 필터와 보호가 필요합니다.

둘째, 우리는 공개적으로 이용 가능한 AI 도구를 사용할 때 우리 자신의 지적 재산의 부주의 한 공개에 대해 우려하고 있습니다. 예를 들어, 특정 생성 AI 도구는 소스 코드 입력을 가져 와서 더 큰 교육 데이터 세트에 통합 할 수 있습니다. 이것이 공개적으로 이용 가능한 도구 인 경우, 독점 소스 코드 또는 기타 지적 재산을 도구를 사용하여 다른 사람에게 노출시킬 수 있습니다.

AI 요원의 미래 워크 플로우

요구 사항에서 품질 보증에 이르기까지 소프트웨어 개발 단계 및 에이전트 역할을 묘사 한 이미지.

인간이 새로운 소프트웨어 요구 사항을 정의하거나 새로운 버그 보고서를 제출하는 미래를 구상하고 일련의 AI 에이전트가 소프트웨어 개발 라이프 사이클의 모든 단계를 수행하여 검토를 위해 결과를 인간 개발자에게 제출합니다. 재고

셋째, AI가 실수를한다는 것을 알고 있어야합니다. 특히, LLM은 취약합니다 환각또는 허위 정보 제공. AI 요원에게 더 많은 작업을 오프로드하더라도, 우리는 가까운 미래에 인간을 루프에 유지해야합니다.

마지막으로, 우리는 AI가 소개 할 수있는 가능한 편견에 관심이 있습니다. 소프트웨어 개발 응용 프로그램에서, 우리는 AI의 제안이 불공평을 생성하지 않도록하고, 생성 된 코드가 인간 윤리 원칙의 한계 내에 있으며 어떤 식 으로든 차별하지 않도록해야합니다. 이것이 루프의 인간이 책임있는 AI에 필수적인 또 다른 이유입니다.

이러한 모든 우려 사항을 유지하면 소프트웨어 개발 수명주기 동안 AI 기능을 계속 개발할 계획입니다. 현재 우리는 일일 작업의 전체 범위에서 개발자를 지원할 수있는 개별 도구를 구축하고 있습니다. 즉, 학습, 코드 생성, 코드 검토, 테스트 생성, 심사 및 디버깅. 우리는 간단한 시나리오로 시작하여보다 복잡한 시나리오를 처리 할 수 ​​있도록 이러한 도구를 천천히 발전시킵니다. 이러한 도구가 성숙되면 다음 단계는 AI 에이전트를 완전한 워크 플로우에 연결하는 것입니다.

우리가 상상하는 미래는 다음과 같이 보입니다. 새로운 소프트웨어 요구 사항이 나오거나 문제 보고서가 제출되면 AI 에이전트는 관련 정보를 자동으로 찾아 내고 관련 코드를 이해하고 관련 코드를 생성하고 코드를 검토하고 평가하고 평가하고 검토하고 평가하여 시스템이 좋은 솔루션을 찾을 때까지 이러한 단계를 순환합니다.

이 시나리오에서도 AI의 작업을 검토하고 감독 해야하는 소프트웨어 엔지니어가 필요합니다. 그러나 소프트웨어 개발자의 역할은 변형 될 것입니다. 소프트웨어 코드를 프로그래밍하는 대신 에이전트와 인터페이스를 프로그래밍 할 것입니다. 그리고 책임있는 AI의 정신으로, 우리 – 인간은 감독을 제공 할 것입니다.

Share post:

Subscribe

Popular

More like this
Related

로봇 서밋 엔지니어링 극장에서 볼 수있는 9 개의 세션

2024 Robotics Summit 's Engineering Theatre에서 연설을했습니다.두 번째로, 쇼...

ARM Institute는 주조 및 단조 프로젝트 통화를위한 로봇 검사를 발행합니다.

ARM Institute는 자금이 부족한 프로젝트 또는 엔지니어링로드 블록에 직면...

Overland AI는 해방되지 않은 위반에 대한 전체 스택 지상 자율성을 보여줍니다

Overland AI는 오버 드라이브 소프트웨어 스택 및 스파크 하드웨어를...

고등학생의 AI 지원 장치는 음주 운전을 억제합니다

사고가 발생하지만 모두 불가피한 것은 아닙니다. 음주 운전은 도로...