게스트: Lu Mian
편집자: Mo Se
2022년 8월 6~7일에 AISummit 글로벌 인공 지능 기술 컨퍼런스가 예정대로 개최됩니다. 회의에서 4Paradigm 시스템 설계자이자 OpenMLDB R&D 책임자인 Lu Mian은 "오픈 소스 기계 학습 데이터베이스 OpenMLDB: 일관된 온라인 및 오프라인 생산 수준 기능 플랫폼"이라는 제목으로 기조 연설을 했으며, 인공 지능의 데이터 및 기능 과제에 중점을 두었습니다. 지능공학 구현, 온라인과 오프라인에서 일관된 OpenMLDB의 프로덕션 레벨 기능 계산 플랫폼, OpenMLDB v0.5: 성능, 비용, 사용 편의성 향상이 세 가지 측면에서 공유되었습니다.
이제 연설 내용은 다음과 같이 구성되었습니다. 여러분에게 영감을 줄 수 있기를 바랍니다.
오늘날 통계에 따르면 인공지능 구현에 소요되는 시간의 95%가 데이터에 소비됩니다. 시중에는 MySQL 등 다양한 데이터 도구가 있지만, 인공지능 구현 문제를 해결하는 것과는 거리가 멀다. 그럼 먼저 데이터 문제부터 살펴보겠습니다.
머신러닝 애플리케이션 개발에 참여한 적이 있다면 아래 그림과 같이 MLOps에 깊은 인상을 받았을 것입니다.
사실 현재 MLOps에 대한 엄격한 학문적 정의는 없으며, 온라인 서비스는 전체적으로 두 가지 프로세스로 나누어집니다. 데이터, 기능, 모델 등 각 프로세스의 정보 전달자는 오프라인 개발 프로세스에서 온라인 서비스 프로세스에 이르기까지 세 가지 다른 전달자를 거치게 됩니다.
다음으로 직면한 과제를 해결하는 방법을 이해하기 위해 중간 기능 프로세스에 중점을 둡니다.
인공지능 개발에는 크게 두 가지 응용 범주가 있습니다. 하나는 인식 유형입니다. 예를 들어 친숙한 얼굴 인식과 기타 AI 응용은 인식입니다. 기본적으로 DNN 알고리즘을 기반으로 합니다. 다른 유형은 타오바오 쇼핑에 대한 개인화된 추천과 같은 의사결정 AI 시나리오입니다. 또한 AI가 의사 결정에 널리 사용되는 위험 제어 시나리오와 사기 방지 시나리오도 있습니다.
그러므로 지금 우리가 이야기하고 있는 적용 배경은 주로 이러한 의사 결정 시나리오에 대한 것입니다. 가장 큰 특징 중 하나는 그 데이터가 2차원 테이블로 구조화된 데이터이며, 또한 시계열 데이터라는 것입니다. 아래 그림과 같이 사용자 트랜잭션 테이블에는 "trans_time"이 있는데, 이는 각 기록이 발생하는 시점을 나타내는 것으로 연결되면 시계열 데이터이다. 시계열 데이터를 기반으로 한 기능 엔지니어링의 가장 일반적인 처리 방법 중 하나는 시간 창 기반 집계 함수입니다. 예를 들어, 하루 동안 사용자의 총 거래 금액을 타겟팅하는 것 등은 의사 결정 시나리오에서 기능 엔지니어링의 일반적인 작업입니다.
이제 OpenMLDB를 사용해야 하는 이유는 무엇입니까? 매우 큰 배경은 AI 요구 사항을 충족하기 위해 실제 하드 실시간 컴퓨팅을 사용하는 것입니다.
하드 실시간 컴퓨팅이란 무엇인가요? 두 가지 의미가 있습니다. 하나는 최신 실시간 데이터를 사용하여 최고의 의사결정 비즈니스 효과를 달성한다는 것입니다. 예를 들어, 비즈니스 의사결정을 내리려면 지난 1년이나 전년도의 데이터가 아닌 지난 10초 또는 1분 동안의 사용자 클릭 행동을 활용해야 합니다.
또 다른 매우 중요한 점은 실시간 계산의 경우 사용자가 행동 요청을 하면 짧은 시간 또는 밀리초 수준에서도 특징 계산이 수행되어야 한다는 것입니다.
현재 시장에는 배치 컴퓨팅/스트리밍 컴퓨팅을 위한 많은 제품이 있지만 아직 밀리초 수준의 하드 실시간 컴퓨팅 요구 사항에 도달하지 못했습니다.
예를 들어, 아래 그림과 같이 생산 수준의 온라인 요구 사항을 충족하는 실시간 추천 시스템을 구축하려면 Xiao Li 사용자가 "세탁기"라는 키워드로 검색을 수행해야 하며 원본 요청 데이터도 입력해야 합니다. 시스템 내 사용자, 제품, 거래 및 기타 정보로서 데이터를 결합하여 실시간 특성 계산을 수행한 다음 좀 더 의미 있는 특성이 생성됩니다. 이를 특성 생성 프로세스인 특성 엔지니어링이라고 합니다. 예를 들어, 시스템은 "지난 3개월 동안 특정 연령층의 고객이 구매한 베스트셀러 세탁기 상위 3개"를 생성합니다. 이러한 유형의 기능은 강력한 적시성이 필요하지 않으며 더 긴 과거 데이터를 기반으로 계산됩니다. 그러나 시스템에는 "지난 1시간/30분 동안의 검색 기록" 등과 같이 매우 시간에 민감한 일부 데이터가 필요할 수도 있습니다. 시스템은 새로 계산된 특징을 얻은 후 추론을 위한 모델을 제공합니다. 이러한 시스템 기능 플랫폼에는 두 가지 주요 요구 사항이 있습니다. 하나는 정확성, 즉 온라인 및 오프라인 기능 계산의 일관성이고, 다른 하나는 효율성, 즉 실시간 기능 계산, 지연
OpenMLDB 방법론 이전에는 모두가 기능 계산 및 개발을 위해 주로 아래 그림과 같은 프로세스를 사용했습니다.
먼저 시나리오를 만들어야 합니다. 데이터 과학자는 오프라인 기능 추출을 위해 Python/SparkSQL 도구를 사용할 것입니다. 데이터 과학자의 KPI는 정확도를 충족하는 비즈니스 요구 사항 모델을 구축하는 것입니다. 모델 품질이 표준에 도달하면 작업이 완료됩니다. 짧은 대기 시간, 높은 동시성, 고가용성 등 기능 스크립트가 온라인에 접속된 후 직면하는 엔지니어링 문제는 과학자의 관할권에 속하지 않습니다.
데이터 과학자가 작성한 Python 스크립트를 온라인에 올리기 위해 엔지니어링 팀이 개입해야 하는 것은 데이터 과학자가 작성한 오프라인 스크립트를 재구성하고 최적화하는 것입니다. C++/Database를 사용하여 실시간 특징 추출 서비스를 수행합니다. 이는 짧은 대기 시간, 높은 동시성 및 고가용성에 대한 일련의 엔지니어링 요구 사항을 충족하여 기능 스크립트가 온라인 서비스를 위해 실제로 온라인으로 전환될 수 있도록 합니다.
이 프로세스는 비용이 많이 들고 두 세트의 기술 팀의 개입이 필요하며 그들이 사용하는 도구도 다릅니다. 두 가지 프로세스 세트가 완료된 후에는 계산 로직의 일관성을 확인해야 합니다. 즉, 데이터 과학자가 개발한 기능 스크립트의 계산 로직이 최종 실시간 기능 추출 로직과 완전히 일치해야 합니다. . 이 요구 사항은 명확하고 간단해 보이지만 일관성 검증 과정에서 많은 통신 비용, 테스트 비용, 반복 개발 비용이 발생합니다. 과거 경험에 따르면 프로젝트 규모가 클수록 일관성 검증에 시간이 오래 걸리고 비용도 매우 높아집니다.
일반적으로 일관성 검증 과정에서 온라인과 오프라인의 불일치가 발생하는 주된 이유는 개발 도구가 일관성이 없기 때문입니다. 예를 들어 과학자들은 Python을 사용하고 엔지니어링 팀은 데이터베이스를 사용합니다. 도구 기능에는 기능적 타협과 불일치가 있으며, 데이터, 알고리즘 및 인지의 정의에도 차이가 있습니다.
간단히 말하면, 전통적인 두 세트의 프로세스를 기반으로 하는 개발 비용은 매우 높습니다. 서로 다른 기술 스테이션의 두 세트의 개발자, 두 세트의 시스템 개발 및 운영이 필요합니다. 또한 중간에 검증, 검증 등이 추가되었습니다.
그리고 OpenMLDB는 저렴한 오픈소스 솔루션을 제공합니다.
OpenMLDB는 지난해 6월 공식적으로 오픈 소스화되었지만 오픈 소스 커뮤니티에서는 아직 구현되지 않았습니다. 300개 이상의 다중 노드를 다루는 100개 이상의 시나리오에서.
OpenMLDB는 오픈 소스 기계 학습 데이터베이스로, 주요 기능은 일관된 온라인 및 오프라인 기능 플랫폼을 제공하는 것입니다. 그렇다면 OpenMLDB는 어떻게 고성능과 정확성에 대한 요구를 충족합니까?
위 그림에서 볼 수 있듯이 우선 OpenMLDB에서 사용하는 유일한 프로그래밍 언어는 SQL입니다. 데이터 과학자와 개발자 모두 기능을 표현하기 위해 더 이상 두 가지 도구 체인이 없습니다. .
둘째, OpenMLDB 내에는 두 개의 엔진 세트가 분리되어 있습니다. 하나는 Spark++ 기반의 소스 코드 수준에서 최적화되어 더 높은 성능의 컴퓨팅 방법을 제공하고 다른 하나는 구문 확장을 수행하는 "배치 SQL 엔진"입니다. "실시간 SQL 엔진"입니다. 이 세트는 우리 팀에서 개발한 리소스 시계열 데이터베이스입니다. 기본값은 메모리 스토리지 엔진을 기반으로 하는 시계열 데이터베이스입니다. "실시간 SQL 엔진"을 기반으로 온라인에서 효율적인 밀리초 수준의 실시간 계산을 달성하는 동시에 고가용성, 짧은 대기 시간 및 높은 동시성을 보장할 수 있습니다.
이 두 엔진 사이에는 온라인 및 오프라인 실행 계획 로직의 일관성을 보장하도록 설계된 중요한 "일관된 실행 계획 생성기"도 있습니다. 이를 통해 수동 교정 없이도 온라인과 오프라인의 일관성이 자연스럽게 보장될 수 있습니다.
간단히 말하면, 우리의 궁극적인 목표는 "개발 및 온라인"이라는 최적화 목표를 달성하는 것입니다. 여기에는 주로 세 가지 단계가 포함됩니다. 오프라인 SQL 기능 스크립트 개발 및 실제 온라인 액세스; - 시간 요청 데이터 흐름.
이전의 프로세스 두 세트, 도구 체인 두 세트, 개발자 투자 두 세트와 비교할 때 이 엔진 세트의 가장 큰 장점은 엔지니어링 비용을 많이 절약한다는 점입니다. 즉, 데이터 과학자가 SQL을 사용하여 기능 스크립트를 개발하는 한 기능 스크립트는 더 이상 엔지니어링 팀이 온라인에 직접 배치하기 전에 두 번째 최적화 작업을 수행할 필요가 없으며 더 이상 온라인 및 오프라인 일관성 확인을 수동으로 수행할 필요가 없습니다. 많은 시간과 비용을 절약합니다.
다음 그림은 오프라인 개발에서 온라인 서비스까지 OpenMLDB의 전체 프로세스를 보여줍니다.
전반적으로 OpenMLDB는 핵심 문제를 해결합니다. 즉, 기계 학습 온라인 및 오프라인 일관성을 제공합니다. -레벨 실시간 기능 계산. 이 두 가지 점이 OpenMLDB가 제공하는 핵심가치입니다.
OpenMLDB에는 온라인과 오프라인 두 가지 엔진이 있기 때문에 적용 방법도 다릅니다. 다음 그림은 권장 참조 방법을 보여줍니다.
다음으로 OpenMLDB의 몇 가지 핵심 구성 요소 또는 기능을 소개합니다.
특징 1, 온라인 및 오프라인 일관 실행 엔진, 통합 기반 기본 컴퓨팅 기능을 통해 논리적 계획에서 물리적 계획에 이르기까지 온라인 및 오프라인 실행 모드가 적응적으로 조정되므로 온라인 및 오프라인 일관성이 보장됩니다.
실시간 계산 + 사전 집계 기술의 하이브리드 최적화 전략을 포함한 고성능 이중 레이어 스킵 테이블 메모리 인덱스 기능 2개, 2개의 메모리/디스크 스토리지 엔진 제공 다양한 성능 및 비용 요구 사항을 충족합니다.
다중 창 병렬 계산 최적화, SQL 구문 확장 등을 포함한 기능 계산을 위한 최적화된 오프라인 컴퓨팅 엔진. 이는 모두 커뮤니티 버전에 비해 성능이 크게 향상되는 결과를 가져옵니다.
Feature 4, 기능 엔지니어링을 위한 SQL 확장입니다. 앞서 언급했듯이 우리는 특성 정의를 위해 SQL을 사용하지만 실제로 SQL은 특성 계산을 위해 설계되지 않았습니다. 따라서 많은 사례를 연구하고 사용 경험을 축적한 결과 SQL 구문을 일부 확장할 필요가 있음을 발견했습니다. 장면 계산을 더 잘 처리할 수 있습니다. 여기에는 두 가지 중요한 확장이 있습니다. 하나는 LAST JOIN이고 다른 하나는 아래 그림과 같이 더 일반적으로 사용되는 WINDOW UNION입니다.
5번째 기능, 엔터프라이즈 수준 기능 지원. OpenMLDB는 분산형 데이터베이스로서 고가용성, 원활한 확장 및 축소, 원활한 업그레이드라는 특징을 갖고 있으며 많은 기업 사례에 구현되었습니다.
특징 6, SQL을 핵심으로 하는 개발 및 관리, OpenMLDB는 데이터베이스 관리이기도 하며, 이는 기존 데이터베이스와 유사합니다. 예를 들어 CLI가 제공되면 OpenMLDB는 전체 프로세스를 CLI에서 구현할 수 있습니다. , 오프라인 기능을 시작으로 계산, SQL 솔루션부터 온라인 요청까지 SQL, CLI 기반의 전체 프로세스 개발 경험을 제공할 수 있습니다.
또한, OpenMLDB는 이제 오픈 소스이며, 업스트림 및 다운스트림 생태계의 확장은 아래 그림과 같습니다.
다음으로 OpenMLDB v0.5의 새 버전을 소개하겠습니다. 세 가지 측면에서 몇 가지 사항이 개선되었습니다.
먼저 OpenMLDB의 개발 역사를 살펴보겠습니다. 2021년 6월, 오픈MLDB는 오픈소스화됐다. 사실 그 전에도 이미 많은 고객이 있었고, 2017년부터 첫 번째 코드 라인 개발을 시작했다. 기술 축적이 4~5년 정도 됐다.
오픈소스 이후 1주년에 우리는 약 5가지 버전을 반복했습니다. 이전 버전과 비교하여 v0.5.0에는 다음과 같은 주목할만한 기능이 있습니다.
성능 업그레이드, 집계 기술은 긴 창 성능을 크게 향상시킬 수 있습니다. 사전 집계 최적화는 긴 창 쿼리에서 대기 시간과 처리량 측면에서 성능을 두 배로 향상시킵니다.
비용 절감, 버전 v0.5.0부터 온라인 엔진은 메모리와 외부 메모리를 기반으로 두 가지 엔진 옵션을 제공합니다. 메모리를 기반으로 낮은 대기 시간과 높은 동시성을 제공하며 더 높은 사용 비용으로 밀리초 수준의 대기 시간 응답을 제공합니다. 외장 메모리를 기반으로 하여 성능에 덜 민감하며 SSD 기반의 일반 구성과 저비용 사용 시 비용을 75% 절감할 수 있습니다. 두 엔진의 상위 레이어 비즈니스 코드는 눈에 띄지 않으며 비용 없이 전환할 수 있습니다.
사용 편의성이 향상되었습니다. v0.5.0 버전에서는 사용자 정의 함수(UDF)를 도입했습니다. 즉, SQL이 기능 추출 논리 표현식을 충족할 수 없는 경우 C/C++ UDF, UDF 동적 등록 등과 같은 사용자 정의 함수가 지원됩니다. 사용자를 용이하게 합니다. 컴퓨팅 로직을 확장하고 애플리케이션 적용 범위를 개선합니다.
마지막으로, 오픈 소스가 시작된 이래 거의 100명의 기여자가 커뮤니티에 코드를 기여해 주셔서 감사합니다. 동시에 더 많은 개발자가 커뮤니티에 참여하여 자신의 노력을 기여하는 것도 환영합니다. .더 의미 있는 일을 하세요.
회의 연설 다시보기와 PPT가 온라인에 공개되었습니다. 공식 웹사이트에서 흥미로운 내용을 확인하세요.
위 내용은 OpenMLDB R&D 리더 Lu Mian, 네 번째 패러다임 시스템 설계자: 오픈 소스 기계 학습 데이터베이스 OpenMLDB: 온라인과 오프라인에서 일관성을 유지하는 프로덕션 수준 기능 플랫폼의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!