KR20230002749A - 머신 러닝 워크로드를 위한 데이터 처리 최적화 간소화 - Google Patents

머신 러닝 워크로드를 위한 데이터 처리 최적화 간소화 Download PDF

Info

Publication number
KR20230002749A
KR20230002749A KR1020227039859A KR20227039859A KR20230002749A KR 20230002749 A KR20230002749 A KR 20230002749A KR 1020227039859 A KR1020227039859 A KR 1020227039859A KR 20227039859 A KR20227039859 A KR 20227039859A KR 20230002749 A KR20230002749 A KR 20230002749A
Authority
KR
South Korea
Prior art keywords
transformation
pipeline
original
data
transformations
Prior art date
Application number
KR1020227039859A
Other languages
English (en)
Inventor
키 장
페트르 노보티니
홍 민
라비 나이어
샤얌 람지
레이 유
타쿠야 나카이케
모토히로 카와히토
Original Assignee
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20230002749A publication Critical patent/KR20230002749A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/254Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • G06N5/022Knowledge engineering; Knowledge acquisition

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Databases & Information Systems (AREA)
  • Computational Linguistics (AREA)
  • Medical Informatics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Image Processing (AREA)
  • Image Analysis (AREA)
  • Stored Programmes (AREA)
  • Advance Control (AREA)

Abstract

데이터 파이프라인의 개선을 위한 기술이 제공된다. 직렬화된 객체들의 원래 파일이 수신되고, 상기 원래 파일에 기초하여 복수의 변환들을 포함하는 원래 파이프라인이 식별된다. 상기 복수의 변환들의 제1 변환에 대한 제1 컴퓨팅 비용이 결정된다. 상기 제1 변환은 미리 정의된 최적화를 사용하여 수정되고, 상기 수정된 제1 변환의 제2 비용이 결정된다. 상기 제2 비용이 상기 제1 비용보다 낮다고 결정되면, 상기 원래 파이프라인에서 상기 제1 변환은 상기 최적화된 제1 변환으로 대체된다.

Description

머신 러닝 워크로드를 위한 데이터 처리 최적화 간소화
[0001] 본 발명내용은 머신 러닝 최적화에 관한 것으로, 보다 구체적으로는 머신 러닝 파이프라인을 최적화하기 위한 개선된 기술에 관한 것이다.
[0002] 머신 러닝(ML) 시스템은 종종 효과적이고 정확하게 작동하기 위해 많은 양의 데이터에 의존한다. 예를 들면, 상기 시스템을 적절하게 훈련하려면 일반적으로 많은 양의 데이터가 필요하다. 유사하게, 사용하는 동안 모델들은 원하는 추론들, 예측들 및 분류들을 제공하기 위해 상당한 양의 데이터를 처리할 것으로 종종 기대된다. 또한, 재훈련 또는 정제 절차 중에 이전 데이터(훈련 데이터 및 배치 데이터를 포함할 수 있음)를 사용하여 모델을 재구성하는 것이 일반적이며, 이는 방대한 양의 기록 평가가 필요할 수 있다.
[0003] 기존 시스템들에서, 데이터는 일반적으로 실제 모델(들)에 대한 입력으로 사용될 준비를 하기 위해 전처리 시스템을 거친다. 전처리 시스템은 원시 입력 데이터에 대한 하나 이상의 평가 및 변환을 포함할 수 있다. 이 전처리는 계산 시간(예를 들어, 프로세서의 주기) 및 메모리 요건을 포함하여 상당한 계산 비용을 초래할 수 있다. 실제로, 많은 시스템에서, 입력 데이터를 전처리하는 데는 ML 모델(들)로 데이터를 실제로 평가하는 것보다 더 많은 계산 비용이 필요하다. 이러 저러한 이유들로, 시스템의 비용과 대기 시간을 줄이기 위해 전처리 시스템이 효율적으로 작동하는 것이 중요하다.
[0004] 예를 들면, (예를 들어, 입력 데이터가 스트림으로 수신되는) 실시간 추론에 의존하는 배치에서는, 입력 데이터는 일반적으로 처리량이 높으며 신속한 평가가 필요하다. 전처리 시스템이 효율적이지 않으면, 프로세스에서 심각한 병목 현상이 발생한다. 일괄 추론 시스템들에서는, 일반적으로 많은 수의 기록이 한 번에 평가된다. 전처리 시스템이 비효율적이면, 그에 따라서 각 일괄 처리는 수집하는 데 상당한 추가 리소스가 필요하다. 이 전처리 시스템의 최적화는 모델의 전체 성능에 매우 중요하다. 그러나 기존 시스템들은 상기 시스템에서 최적화를 식별하고 구현하기 위해 상당한 수동 노력에 의존한다. 이것은 다시 추가 비용과 지연을 초래한다. 또한 이러한 수동 접근 방식은 본질적으로 주관적인 경우가 많으며 시스템을 개선하기 위한 지능적이고 체계적인 기술을 제공하지 않는다.
[0005] 본 발명내용의 한 실시예에 따르면, 방법이 제공된다. 상기 방법은 직렬화된 객체들의 원래 파일을 수신하는 단계; 상기 원래 파일에 기초하여 복수의 변환들을 포함하는 원래 파이프라인을 식별하는 단계; 상기 복수의 변환들의 제1 변환에 대한 제1 컴퓨팅 비용을 결정하는 단계; 미리 정의된 최적화를 사용하여 상기 제1 변환을 수정하는 단계; 상기 수정된 제1 변환의 제2 비용을 결정하는 단계; 및 상기 제2 비용이 상기 제1 비용보다 낮다고 결정되면, 상기 원래 파이프라인에서 상기 제1 변환을 상기 최적화된 제1 변환으로 대체하는 단계를 포함한다. 이러한 방법은 처리 파이프라인에서 데이터 기반의 상당한 개선을 가능하게 하는 이점이 있다.
[0006] 본 발명내용의 일부 실시예에 따르면, 상기 실시예들 중 임의의 조합은, 상기 원래 파이프라인을 식별하는 단계가 데이터 처리 그래프를 생성하는 단계를 포함하는 기술들을 더 포함할 수 있으며, 여기서 상기 데이터 처리 그래프에서 각각의 버텍스는 상기 복수의 변환들의 각각의 변환을 나타내며, 상기 데이터 처리 그래프에서 각각의 엣지는 상기 원래 파이프라인에서 데이터 흐름을 명시한다. 이러한 실시예는 적어도 각 요소를 동적으로 분석하고 잠재적인 개선 사항을 식별하기 위해 파이프라인에 대한 세분화된 평가 및 이해를 가능하게 하기 때문에 이점이 있다.
[0007] 본 발명내용의 일부 실시예에 따르면, 상기 실시예들 중 임의의 조합은, 상기 데이터 처리 그래프를 생성하는 단계가: 상기 원래 파일에 기초하여 상기 원래 파이프라인을 인스턴스화하는 단계; 샘플 데이터에 대해 상기 원래 파이프라인을 실행하는 단계; 상기 실행에 기초하여 상기 복수의 변환들을 식별하는 단계; 및 상기 실행에 기초하여 일련의 상기 복수의 변환들을 식별하는 단계를 포함하는, 기술들을 더 포함할 수 있다. 이러한 실시예는 시스템이 파이프라인과 관련된 특정 변환들 및 데이터 흐름을 식별할 수 있게 하는 동시에 시스템이 사용 중인 원래 파이프라인을 모니터링할 수 있게 하는 이점이 있다. 이렇게 하면 복잡성이 감소하고 개선이 가속화된다.
[0008] 본 발명내용의 일부 실시예에 따르면, 상기 실시예들 중 임의의 조합은, 상기 데이터 처리 그래프를 생성하는 단계가 상기 원래 파이프라인을 인스턴스화하지 않고 상기 원래 파이프라인에서 상기 복수의 변환들 및 상기 데이터 흐름을 식별하기 위해 상기 원래 파일을 평가하는 단계를 포함하는, 기술들을 더 포함할 수 있다. 이러한 실시예는 시스템이 파이프라인을 인스턴스화하거나 실제 데이터를 처리할 필요 없이 파일을 직접 조사하여 파이프라인의 평가를 시작할 수 있게 하기 때문에 이점이 있을 수 있다.
[0009] 본 발명내용의 일부 실시예에 따르면, 상기 실시예들 중 임의의 조합은, 상기 제1 변환에 대한 상기 제1 컴퓨팅 비용을 결정하는 단계가: 샘플 데이터에 대해 상기 제1 변환을 실행하는 단계; 및 상기 실행을 평가하여 상기 제1 변환을 수행하는 것의 대기 시간을 결정하는 단계를 포함하는, 기술들을 더 포함할 수 있다. 이를 통해 시스템은 실제적인 방식으로 데이터 처리와 관련된 비용을 동적으로 식별할 수 있으며, 이는 런타임에 예상할 수 있는 것을 더 잘 반영할 수 있는 이점이 있다.
[0010] 본 발명내용의 일부 실시예에 따르면, 상기 실시예들 중 임의의 조합은, 상기 미리 정의된 최적화가 상기 제1 변환에서 증가된 병렬화를 포함하는, 기술들을 더 포함할 수 있다. 병렬 처리는 처리 지연을 줄이는 데 종종 유용하기 때문에 이러한 실시예는 개선되지 않은 변환에 비해 상당한 개선을 가능하게 한다.
[0011] 본 발명내용의 일부 실시예에 따르면, 상기 실시예들 중 임의의 조합은, 상기 미리 정의된 최적화가 상기 제1 변환에 대한 단일 행 최적화를 포함하는, 기술들을 더 포함할 수 있다. 이러한 실시예는 이러한 단일 행 최적화들이 종종 훨씬 더 빠르고 데이터가 허용할 때 더 적은 리소스를 사용하기 때문에 개선되지 않은 변환에 비해 상당한 개선을 가능하게 한다.
[0012] 본 발명내용의 일부 실시예에 따르면, 상기 실시예들 중 임의의 조합은, 상기 원래 파이프라인 및 상기 최적화된 제1 변환에 기초하여 직렬화된 객체들의 최적화된 파일을 생성하는 단계를 더 포함할 수 있다. 이러한 실시예는 시스템이 전송 및 분석하기 쉬운 유용한 형식으로 개선된 파이프라인을 요청 엔티티에 반환할 수 있게 한다.
[0013] 본 발명내용의 다른 실시예에 따르면, 상기 논의된 실시예들 중 임의의 조합은 하나 이상의 컴퓨터 판독 가능 스토리지 매체에 의해 구현될 수 있다. 상기 컴퓨터 프로그램 코드는 하나 이상의 컴퓨터 프로세서에 의해 실행될 때 연산을 수행하는 컴퓨터 프로그램 코드를 집합적으로 포함한다. 실시예들에서, 상기 수행되는 연산은 상기 방법들 및 실시예들의 임의의 조합에 해당한다.
[0014] 본 발명내용의 또 다른 실시예에 따르면, 상기 논의된 실시예들 중 임의의 조합은 시스템에 의해 구현될 수 있다. 상기 시스템은 하나 이상의 컴퓨터 프로세서; 및 상기 하나 이상의 컴퓨터 프로세서에 의해 실행될 때 연산을 수행하는 프로그램을 집합적으로 포함하는 하나 이상의 메모리를 포함한다. 실시예들에서, 상기 수행되는 연산은 상기 방법들 및 실시예들의 임의의 조합에 해당한다.
[0015] 도 1은 본원에 개시된 일 실시예에 따른, 시스템의 기능을 개선하기 위해 변환 수정 사항들을 자동으로 식별하고 대체하도록 구성된 파이프라인 최적화기를 포함하는, 머신 러닝을 위한 환경을 도시한다.
[0016] 도 2는 본원에 개시된 일 실시예에 따른, 파이프라인 최적화를 위한 워크플로우를 도시한다.
[0017] 도 3은 본원에 개시된 일 실시예에 따른, 일련의 변환 연산들 및 대안적인 최적화된 변환들의 세트들을 포함하는 처리 파이프라인을 도시한다.
[0018] 도 4는 본원에 개시된 일 실시예에 따른, 데이터 프레임들에서 병렬 처리(parallelism)를 활용하는 파이프라인 최적화를 도시한다.
[0019] 도 5는 본원에 개시된 일 실시예에 따른, 대안적인 변환들을 사용하는 자동화된 파이프라인 최적화를 위한 방법을 예시하는 흐름도이다.
[0020] 도 6은 본원에 개시된 일 실시예에 따른, 파이프라인 최적화들을 자동으로 평가하고 구현하기 위한 방법을 예시하는 흐름도이다.
[0021] 도 7은 본원에 개시된 일 실시예에 따른, 변환 파이프라인들을 자동으로 평가하고 최적화하도록 구성된 파이프라인 최적화기를 도시하는 블록도이다.
[0022] 본 발명내용의 실시예들은 필요한 컴퓨팅 비용들을 감소시킴으로써 데이터 처리 시스템들을 지능적으로 및 자동으로 최적화하기 위한 기술들을 제공한다. 일 실시예에서, 시스템은 그의 입력으로서 데이터 변환 파이프라인을 수신하고, 처리의 계산 비용들을 감소시키는 수정된/개선된 파이프라인을 반환한다. 일부 실시예에서, 파이프라인 자체를 수신하는 것보다는 시스템은 직렬화된 객체들의 세트를 지정하는 데이터 파일을 수신한다. 즉, 입력은 파이프라인 구조를 직렬화하여 만든 파일일 수 있다. 예를 들면, 그러한 일 실시예에서, 입력은 Python® 피클 파일이다. 일 실시예에서, 전처리 파이프라인을 설계하는 클라이언트는 이를 직렬화하고 전송하거나 다른 방식으로 최적화 시스템에 제공할 수 있으며, 그 시스템은 이를 잠재적 최적화를 위해 평가한다.
[0023] 일 실시예에서, 시스템은 먼저 파이프라인 단계들 사이의 관계를 식별할 수 있다. 이는 예를 들어 파이프라인에 대한 데이터 전처리 그래프를 생성하는 것을 포함할 수 있으며, 여기서 그래프의 각 버텍스 또는 노드는 파이프라인의 단계 또는 변환에 해당하고 각 엣지는 파이프라인에서 표시된 대로 연산들 간의 데이터 흐름을 지정한다. 일 실시예에서, 시스템은 수신된 파일을 사용하여 파이프라인을 인스턴스화하고(예를 들어, 파일을 역직렬화하여 파이프라인을 구축하고), 파이프라인을 사용하여 샘플 데이터의 세트를 처리함으로써 그렇게 한다. 이 실행을 관찰함으로써, 시스템은 호출된 변환 함수들과, 일련의 이러한 변환들을 식별할 수 있다. 이는 각 단계에서 데이터가 어떻게 변경되는지 관찰하고, 처리와 관련된 정보를 방출하기 위해 각 변환에 반영 후크들을 추가하는 등을 행함으로써 달성될 수 있다. 다른 실시예에서, 시스템은, 파이프라인을 실제로 인스턴스화하거나 실행하지 않고, 직렬화된 파일 자체를 분석하여 그래프를 구축한다.
[0024] 일부 실시예에서, 시스템은 파이프라인에서 하나 이상의 변환의 계산 비용들을 더 결정할 수 있다. 이 비용들은 예를 들어 계산 리소스 사용량(예컨대 메모리 사용량, 스토리지 요건들, 프로세서 사용량, 네트워크 사용량 등), 대기 시간 비용들 등을 포함할 수 있다. 일 실시예에서, 시스템은 파이프라인을 인스턴스화하고 각 변환 연산에 후크들을 추가함으로써 이 비용들을 결정할 수 있다. 그런 다음 파이프라인이 런타임 동안 (훈련 또는 런타임 데이터를 처리하기 위해) 사용되면, 시스템은 ML 시스템이 사용한 실제 데이터에 기초하여 각 연산의 비용들을 결정할 수 있다. 다른 실시예에서, 시스템은 각각의 비용들을 추정하거나 결정하기 위해 샘플 데이터에 대한 변환들을 실행한다. 이 샘플 데이터는 (예상되는 실제 데이터와 더 잘 일치하도록) 클라이언트가 제공할 수 있다.
[0025] 실시예들에서, 시스템은 변환 연산들에 대한 잠재적인 최적화들 또는 수정들의 비용들을 유사하게 결정할 수 있다. 일 실시예에서, 최적화 시스템은 사전 정의된 수정된/대안적인 변환들의 라이브러리 또는 컬렉션을 유지할 수 있다. 원래 파이프라인의 각 변환에 대해, 시스템은 이 라이브러리로부터 0개 이상의 대안들/수정들의 세트를 식별할 수 있다. 그런 다음 시스템은 이러한 각 대안을 평가하여 비용들을 결정할 수 있다. 적어도 하나의 실시예에서, 각각의 변환은 이름 또는 다른 식별자, 입력들의 세트, 및 출력들의 세트와 연관된다. 이 정보를 기반으로, 시스템은 기존 파이프라인의 연산을 대체할 수 있는 대안들/수정된 변환들을 식별할 수 있다.
[0026] 예를 들면, 입력 데이터에 많은 수의 행이나 열이 포함된 경우 비용들을 크게 줄일 수 있는 병렬 처리(parallelism)를 활용하도록 변환이 설계 또는 수정될 수 있다. 유사하게, 단일 행 최적화는 단일 기록 또는 더 작은 데이터 세트에 대한 비용들을 개선할 수 있다. 일 실시예에서, 시스템은 원래 파이프라인에서 주어진 변환에 대한 임의의 수의 대안적인 변환 함수를 유지할 수 있다. 동일한 샘플 데이터(또는 런타임 중 실제 데이터)를 사용하여 각 대안을 실행함으로써, 시스템은 평가되는 실제 데이터 및 파이프라인과 관련하여 가장 효율적인 연산을 식별할 수 있다.
[0027] 일단 각각의 수정이 평가되면, 일 실시예에서, 시스템은 예컨대 원래 함수 서명을 선택된(최적화된) 버전으로 대체함으로써, 선택된 최적화들을 원래 파이프라인에 적용할 수 있다. 일 실시예에서, 시스템은 그 후 파이프라인/클라이언트에 대한 수신된 데이터를 처리하기 위해 이 최적화된 파이프라인을 사용하기 시작할 수 있다. 다른 실시예에서, 시스템은 이 새로운 파이프라인을 직렬화하고 이를 클라이언트에(또는 전처리 파이프라인 및/또는 ML 모델을 실행할 다른 시스템에) 반환할 수 있다. 이 개선된 파이프라인은 원래 파이프라인보다 더 효과적이고 효율적으로 연산하여 계산 비용을 줄이고 시스템들의 기능을 개선할 수 있다.
[0028] 도 1은 본원에 개시된 일 실시예에 따른, 시스템의 기능을 개선하기 위해 변환 수정 사항들을 자동으로 식별하고 대체하도록 구성된 파이프라인 최적화기(115)를 포함하는, 머신 러닝을 위한 환경(100)을 도시한다. 예시된 워크플로우에서, 입력 데이터(105)는 데이터 준비(110)라고 라벨링된 초기 전처리 단계 중에 수신 및 처리된다. 이 데이터 준비(110)는 예를 들어 입력 데이터(105)를 재구성 및/또는 재포맷하는 것, 입력 데이터(105)를 집합하거나 분할하는 것 등을 포함할 수 있다. 적어도 하나의 실시예에서, 데이터 준비(110)는 변환 파이프라인의 사용을 포함하고, 여기서 입력 데이터(105)는 다양한 변환 및 연산으로 순차적으로 처리된다. 실시예들에서, 이 파이프라인은 선형 또는 비선형일 수 있다. 즉, 적어도 하나의 실시예에서, 파이프라인은 루프들, 재귀 섹션들 등을 포함할 수 있다. 많은 실제 사용 사례에서, 데이터 준비(110)는 계산적으로 복잡하고 종종 입력 데이터(105)를 평가하는 데 필요한 대부분의 컴퓨팅 비용들의 원인이 된다.
[0029] 예시된 실시예에서, 파이프라인 최적화기(115)는 감소된 대기 시간으로, 및/또는 더 적은 계산 리소스를 사용하여 더 효율적으로 연산하도록 데이터 준비(110)를 개선하는 데 사용될 수 있다. 일부 실시예에서, 파이프라인 최적화기(115)는 대안들을 식별하기 위해 파이프라인의 각 변환을 반복적으로 분석하고, 최적의 대체를 식별하기 위해 이러한 각각의 대안을 평가한다. 예시된 바와 같이, 데이터 준비(110)를 거친 후 모델 구축(120)이 수행된다. 모델 구축(120)은 일반적으로 ML 모델들의 구성, 훈련, 및 개선을 포함한다. 이 모델들은 지도 모델들(예를 들어, 라벨링된 훈련 데이터로 훈련됨), 비지도 모델들(라벨링된 데이터 없이 준비됨) 등을 포함할 수 있다. 일반적으로, 모델 구축(120)은 임의의 수의 다양한 모델의 생성을 포함할 수 있다.
[0030] 모델들이 구축된 후, 일부 실시예에서, 이 모델들은 (예를 들어, 시험 데이터를 사용하여) 평가되거나 검증된다. 일부 실시예에서, 이렇게 하면 시스템들을 개선하기 위해 획득되고 준비되는 새로운 입력 데이터(105)가 생성될 수 있다. 모델(들)이 허용 가능하면, 프로세스는 모델 배치(125)로 진행되고, 여기서 모델(들)이 런타임 동안 사용된다. 일 실시예에서, 워크플로우의 각 요소는 물론 언제든지 반복될 수 있다. 예를 들면, 모델 배치(125) 후, 모델(들)은 새로운 데이터를 사용하여 지속적으로 또는 주기적으로 개선될 수 있다. 이와 유사하게, 모델은 때때로 완전히 재구축될 수 있다(예를 들어, 완전히 재훈련될 수 있다). 이러한 재구성들 각각은 입력 데이터(105)가 데이터 준비(110) 파이프라인에 의해 처리되는 것이 필요하다. 마찬가지로, 사용 중에, 배치된 모델들에 의해 새 데이터가 수신되고 평가될 때는, 먼저 데이터 준비(110) 단계를 거쳐야 한다. 따라서, 데이터 준비(110)는 훈련 동안 뿐만 아니라 모델의 수명 주기 전반에 걸쳐 수행된다. 이는 최적화되고 효율적인 변환 파이프라인들의 중요성을 증가시킨다.
[0031] 도 2는 본원에 개시된 일 실시예에 따른, 파이프라인 최적화를 위한 워크플로우(200)를 도시한다. 예시된 실시예에서, 원래 파이프라인(205)이 수신된다. 일 실시예에서, 원래 파이프라인(205)은 ML 시스템에서 사용하기 위해 준비하기 위해 입력 데이터에 적용되는 일 세트 또는 일련의 데이터 변환들에 대응한다. 예를 들어, 원래 파이프라인(205)은 원시 입력 데이터를 런타임 시 모델을 훈련하고/하거나 모델에 입력하기에 적합한 준비된 데이터로 변환하는 일련의 연산들을 포함할 수 있다. 적어도 하나의 실시예에서, 원래 파이프라인(205)은 파이프라인 최적화기(115)에 의해 직렬화된 데이터 파일의 형태로 수신된다. 예를 들면, 그러한 일 실시예에서, 입력은 Python® 피클 파일이다.
[0032] 도시된 바와 같이, 파이프라인 최적화기(115)는 개선된 파이프라인(215)을 생성하기 위해 일 세트의 미리 정의된 최적화된 변환들(210)에 의존하여 원래 파이프라인(205)을 평가한다. 일 실시예에서, 최적화된 변환들(210)에는 일반적으로 변환 연산자들, 함수들, 방법들, 기술들, 모듈들, 또는 기타 컴포넌트들이 포함된다. 각각의 최적화된 변환(210)은 입력 데이터의 하나 이상의 요소들을 수신하고 하나 이상의 연산들 또는 변환들을 수행하도록 구성된다. 일 실시예에서, 최적화된 변환들(210)의 일부 또는 전부는 (예를 들어, 수정된/변환된 입력들을 출력하기 위해) 일부 출력을 생성하도록 더 구성된다.
[0033] 일 실시예에서, 각각의 최적화된 변환(210)은 하나 이상의 원래 변환들의 개선된 또는 수정된 버전이다. 예를 들어, (원래 파이프라인들(205)에서 사용될 수 있는) 원래 변환 함수는 입력 데이터의 형식을 다시 지정하는 것을 포함한다고 가정해보자. 일 실시예에서, 최적화된 변환들(210)은 재포맷 변환의 0개 이상의 수정된 또는 개선된 버전들의 세트를 포함할 수 있다. 즉, 사용자는 이전에 변환에 대한 가능한 대안들 또는 수정들을 정의했을 수 있으며, 이는 이를 일부 데이터세트들에서 더 효율적이게 만들 수 있다. 이러한 실시예에서, 최적화된 변환들(210)은 원래 변환과 동일한 입력을 수신하고 동일한 출력을 산출하도록 구성될 수 있으며, 하지만 다른 방식들로(예를 들어, 병렬 처리를 활용하고, 일부 변환들을 다른 더 유능한 컴포넌트들로 아웃소싱하는 등) 그렇게 할 수 있다.
[0034] 일 실시예에서, 각각의 최적화된 변환(210)은 그것을 식별하기 위해 사용될 수 있는 대응하는 서명과 연관된다. 이 서명은 일부 실시예에서 연산에 대한 입력(들) 및/또는 출력(들)의 표시를 포함한다. 일부 실시예에서, 서명은 최적화된 변환(210)의 이름을 더 포함한다. 일 실시예에서, 원래 파이프라인(205)에서 각각의 변환 연산에 대해, 파이프라인 최적화기(115)는 임의의 대안들이 존재하는지를 결정하기 위해 최적화된 변환들(210)을 검색한다. 이것은 원래 변환과 동일하거나 중첩되는 서명을 가진(예를 들어, 동일하거나 유사한 이름/설명, 및 동일한 입력들/출력들을 가진) 최적화된 변환들(210)을 식별하는 것을 포함할 수 있다.
[0035] 그런 다음 파이프라인 최적화기(115)는 어느 것을 적용해야 할지를 결정하기 위해 상기 각 대안을 반복적으로 평가할 수 있다. 일 실시예에서, 파이프라인 최적화기(115)는 대안(들)과 원본을 사용하여 시험 데이터를 처리함으로써 그렇게 한다. 실시예들에서, 최상의 변환 연산자는 입력 데이터의 특성 및 구조에 따라 다를 가능성이 있다. 예를 들면, 병렬 처리는, 입력 데이터 프레임이 여러 병렬 파이프라인에 걸쳐 분할될 수 있다면, 일부 입력 데이터에 대한 계산 비용을 줄일 수 있다. 유사하게, 많은 표준 변환 함수는 입력 행렬(예를 들어, M개 열 및 N개 행의 차원) 상에서 연산되도록 설계된다. 실제 입력 데이터가 단일 차원(예를 들어, 여러 행이 있는 단일 열 또는 여러 열이 있는 단일 행)에 존재한다면, 복잡성을 줄이기 위해 단일 행 최적화가 적용될 수 있다.
[0036] 실시예들에서, 파이프라인 최적화기(115)는 데이터 상에서 연산할 때 연산의 대기 시간, 필요한 계산 리소스 등을 포함하여 임의의 수의 기준에 기초하여 최적의 함수를 선택할 수 있다. 최상의 기능이 식별되면(최적화된 변환(210) 또는 원래 변환일 수 있음), 파이프라인 최적화기(115)는 파이프라인에 대해 이 연산을 선택하고 파이프라인에서 다음 단계로 진행한다. 예시된 바와 같이, 이 프로세스가 완료되면, 파이프라인 최적화기(115)는 함수들의 일부 또는 전부가 맞춤형/개선된 연산들로 대체될 수 있는 개선된 파이프라인(215)을 출력한다. 일부 실시예에서, 개선된 파이프라인(215)은 시스템에 의해 배치되고 사용된다. 적어도 하나의 실시예에서, 개선된 파이프라인(215)은 직렬화되고 분석을 위해 원래 파이프라인(205)을 원래 제공했던 클라이언트로 반환된다.
[0037] 도 3은 본원에 개시된 일 실시예에 따른, 일련의 변환 연산들 및 대안적인 최적화된 변환들의 세트들을 포함하는 처리 파이프라인(300)을 도시한다. 예시된 실시예에서, 원래 파이프라인(205)은 일련의 변환 연산들(305A-N)을 포함한다. 순차적인 워크플로우로 묘사되지만, 일부 실시예에서, 원래 파이프라인(205)은 반복들, 루프들, 순환들 및 기타 복잡성을 포함할 수 있다. 일반적으로, 각각의 변환 연산(305A-N)은 입력 데이터에 적용되는 정의된 변환이다. 원래 파이프라인(205)에서 화살표는 파이프라인을 통한 데이터의 흐름을 나타낸다. 예를 들면, 데이터가 변환 연산(305A)에 의해 처리된다. 이 처리 후, 이는 변환 연산(305B)으로 전달되고, 여기서 해당 연산을 수행한다. 그 후, 이 데이터는 변환 연산(305C)에 제공된다.
[0038] 예시된 실시예에서, 파이프라인 최적화기(115)는 각각의 변환 연산(305A-N)에 대한 일 세트의 최적화된 변환들(310A-N)을 식별했다. 즉, 파이프라인 최적화기(115)는 최적화된 변환들(310A) 각각이 동일한 입력을 수신하고, 동일한 연산을 수행하고, 동일한 출력을 반환하도록 구성되기 때문에 변환(305A)가 최적화된 변환들(310A) 중 어느 하나로 대체될 수 있음을 확인했다. 유사하게, 변환 연산(305B)은 최적화된 변환들(310B)로 대체될 수 있으며, 이런식으로 진행된다. 실시예들에서, 각각의 변환 연산(305)은 0 또는 더 대안적인 최적화된 변환들(310)을 가질 수 있다. 즉, 일부 변환 연산들(310)은 등가의 최적화된 버전을 갖지 않을 수 있는 반면, 다른 것들은 단일 대안 또는 다수 대안을 가질 수 있다.
[0039] 일 실시예에서, 잠재적으로 대안적인 최적화된 변환들(310)의 세트가 자신들의 서명에 기초하여 주어진 변환 연산(305)에 대해 식별된다. 예를 들어, 변환 연산(305)이 두 개의 입력과 하나의 출력과 연관되고, “DBLookup”이라는 이름/설명을 가졌다고 가정해보자. 일부 실시예에서, 파이프라인 최적화기(115)는 동일한 입력들 및 출력들을 활용하는 최적화된 변환들(310A)을 식별할 수 있다. 적어도 하나의 실시예에서, 파이프라인 최적화기(115)는 동일한 또는 유사한 이름(예를 들어, “DBLookup_v1.1”)을 가진 최적화된 변환들(310)을 식별한다. 일부 실시예에서, 최적화된 변환들(310)은 이들이 대체하도록 설계된 기본 변환과 동일한 이름을 가질 수 있지만, 최적화의 유형, 그것을 생성한 사용자, 생성된 시간 및/또는 날짜, 버전 정보 등을 나타내는 다른 메타데이터와 연관될 수 있다. 주어진 변환 연산(305)에 대해 잠재적인 대안들의 세트가 식별되면, 이들은 원래 파이프라인(205)을 대체할 하나 이상을 선택하기 위해(원래 연산과 함께) 반복적으로 평가될 수 있다.
[0040] 도 4는 본원에 개시된 일 실시예에 따른, 데이터 프레임들에서 병렬 처리를 활용하는 파이프라인 최적화(400)를 도시한다. 예시된 실시예에서, 원래 파이프라인의 하나 이상의 부분이 일부 데이터세트에서 계산 효율성을 향상시킬 수 있는 병렬 처리를 활용하도록 수정되었다. 구체적으로, 예시된 바와 같이, 입력된 데이터 프레임(405)은 분할(410)을 거치고, 분할된 데이터 프레임(405)의 각 부분은 연산(415A 및 415B)에서 개별(병렬) 변환들을 거친다. 연산(415B) 후에, 개별 스트림들은 집합(420)에서 재결합되어 단일 데이터 프레임을 산출한다. 그런 다음 이 프레임은 파이프라인의 다음 단계(들)로 진행할 수 있다.
[0041] 일부 실시예에서, 병렬 처리가 주어진 변환 연산을 개선한다는 판단이 내려지면, 파이프라인 최적화기(115)는 주어진 연산 전과 후에 분할(410) 및 집합(420)을 각각 삽입할 수 있다. 적어도 하나의 실시예에서, 파이프라인 최적화기(115)가 둘 이상의 인접 연산이 모두 동일한 병렬 처리를 사용하여 개선될 수 있다고 판단하면, 파이프라인 최적화기(115)는 순차 연산들의 세트 주위에 분할(410) 및 집합(420)을 배치할 수 있다. 즉, 각 연산마다 데이터 프레임을 반복적으로 분할 및 집합하기보다는, 파이프라인 최적화기(115)는 그 대신 데이터를 분할하고, 일련의 트랜스포머들을 사용하여 그것을 처리하고, 다음 연산이 병렬 처리를 이용하지 않을 지점에 그것을 집합시키는 파이프라인을 생성할 수 있다.
[0042] 도 5는 본원에 개시된 일 실시예에 따른, 대안적인 변환들을 사용하는 자동화된 파이프라인 최적화를 위한 방법(500)을 예시하는 흐름도이다. 예시된 실시예에서, 방법(500)은 블록(505)에서 시작하고, 여기서 파이프라인 최적화기(115)가 데이터 준비 파이프라인을 수신한다. 일부 실시예에서, 파이프라인은 클라이언트로부터 수신된다. 예를 들면, 클라이언트는 파이프라인을 제공하고 그것이 평가/최적화되도록 요청할 수 있다. 적어도 하나의 실시예에서, 파이프라인 최적화기(115)는 ML 서비스를 제공하는 시스템의 하나의 컴포넌트이다. 예를 들면, 클라이언트들은 준비 파이프라인 및 ML 모델 자체의 구조와 구성을 정의하고 이러한 사양을 모델을 호스팅하고 컴퓨팅 리소스를 제공하는 엔티티에 전송할 수 있다.
[0043] 일부 실시예에서, 파이프라인은 직렬화된 데이터 파일로서 수신된다. 일반적으로, 수신된 파이프라인은 적용될 일 세트의 하나 이상의 변환들, 연산들, 또는 함수들을 명시하고, 변환들 간 데이터 흐름을 정의한다. 블록(510)에서, 파이프라인 최적화기(115)는 수신된 파이프라인에 대한 처리 그래프를 생성한다. 일 실시예에서, 처리 그래프의 각 버텍스 또는 노드는 변환들 또는 연산들 중 하나에 해당하고, 그래프의 각 엣지는 데이터가 파이프라인을 통해 흐르는 방식에 해당한다. 일 실시예에서, 파이프라인 최적화기(115)는 파이프라인을 실제로 인스턴스화하거나 구축하지 않고 변환들 및 데이터 흐름을 식별하기 위해 데이터 파일 자체를 평가하여 그래프를 생성한다. 적어도 하나의 실시예에서, 파이프라인 최적화기(115)는 수신된 사양에 기초하여 파이프라인을 구축/인스턴스화함으로써 그래프를 구축한다.
[0044] 일부 실시예에서, 그런 후, 파이프라인 최적화기(115)는 데이터가 파이프라인을 통해 이동할 때 데이터를 추적하기 위해 각 변환에 후크들 또는 다른 구조들을 추가한다. 그런 후, 파이프라인 최적화기(115)는 인스턴스화된 파이프라인을 통해 일 세트의 샘플 데이터를 실행할 수 있고, 적용된 일련의 변환들 뿐만 아니라 각 노드에서 수행된 변환들/연산들을 식별하기 위해 이 반영 메커니즘을 사용할 수 있다.
[0045] 블록(515)에서, 파이프라인 최적화기(115)는 원래 파이프라인으로부터 변환 연산들 중 하나를 선택한다. 일 실시예에서, 변환 연산을 선택하는 것은 생성된 그래프에서 노드들/버텍스들 중 하나를 선택하고 파이프라인에서 기본 함수(들)를 식별함으로써 수행된다. 그런 후, 방법(500)은 블록(520)으로 계속되며, 여기서 파이프라인 최적화기(115)가 선택된 변환 연산에 대해 하나 이상의 대안이 존재하는지 판단한다. 일 실시예에서, 여기에는 동일한 입력 데이터를 활용하고, 동일한 출력 데이터를 반환하고, 선택된 함수와 동일한 연산들/변환들을 수행하는 대안 함수들을 식별하기 위해 일 세트의 미리 정의된 변환들(예를 들어, 최적화된 변환들(210))을 검색하는 것이 포함된다. 일부 실시예에서, 위에서 논의된 바와 같이, 파이프라인 최적화기(115)는 선택된 연산의 서명을 사용하여 일치하는 또는 관련된 수정된 변환들을 식별한다.
[0046] 선택된 노드에 대해 이용 가능한 대안적인 또는 수정된 변환들이 없으면, 방법(500)은 블록(550)으로 계속되며, 이는 아래에서 더 상세하게 논의된다. 블록(520)으로 돌아가서, 선택된 함수에 대해 적어도 하나의 수정된, 최적화된, 또는 대안적인 변환 연산이 존재하면, 방법(500)은 블록(525)으로 계속된다. 블록(525)에서, 파이프라인 최적화기(115)는 식별된 대안 연산들 중 하나를 선택한다. 그런 후, 방법(500)은 블록(530)으로 진행하고, 여기서 파이프라인 최적화기(115)가 선택된 대안의 비용(들)을 정량화한다.
[0047] 일 실시예에서, 파이프라인 최적화기(115)는 선택된 대안을 샘플 데이터에 대해 실행함으로써 그렇게 한다. 이 샘플 데이터는 파이프라인 최적화기(115)에 의해 생성 또는 선택될 수 있거나, 클라이언트에 의해 제공될 수 있다. 예를 들면, 그러한 일 실시예에서, 클라이언트는 파이프라인 최적화기(115)가 현실적인 데이터를 기반으로 선택된 대안의 비용들을 결정할 수 있게 하는 예상 런타임 데이터를 반영하는 데이터의 샘플을 제공할 수 있다. 일부 실시예에서, 파이프라인 최적화기(115)는 런타임 동안(예를 들어, 모델(들)을 훈련하거나 사용하기 위해 배치에서 실제 데이터를 처리하기 시작하기 위해) 원래 파이프라인을 인스턴스화하고 사용한다. 이러한 실시예에서, 파이프라인 최적화기(115)는, 실제 데이터를 사용하여 각각의 비용들을 정량화하기 위해, 런타임 동안, 식별된 대안(들)을 사용하여 데이터를 처리할 수도 있다.
[0048] 실시예들에서, 수집된 비용들은 대기 시간, 경비(expense), 메모리 사용량, 프로세서 사용량, 스토리지 사용량 등을 포함하는 임의의 수 및 다양한 메트릭을 포함할 수 있다. 일부 실시예에서, 클라이언트는 고려되어야 하는 비용(들)을 선택하고 및/또는 이에 가중치를 부여할 수 있다. 일단 변환의 비용(들)이 결정되면, 방법(500)은 블록(535)으로 진행하며, 여기서 파이프라인 최적화기(115)가 아직 평가되지 않은 적어도 하나의 대안이 있는지 여부를 판단한다. 만일 그렇다면, 방법(500)은 블록(525)으로 돌아간다. 만일 모든 잠재적인 대안 변환 함수들의 비용들이 식별되었다면, 방법(500)은 블록(540)으로 계속되고, 여기서 파이프라인 최적화기(115)가 파이프라인에서 원래 변환 함수의 비용(들)을 결정한다. 실시예들에서, 여기에는 원래 파이프라인을 사용하여 샘플 데이터를 평가하는 것이 포함된다. 일부 실시예에서, 위에서 논의된 바와 같이, 여기에는 런타임 동안 파이프라인을 인스턴스화하고 사용하는 것, 및 시스템에서 실제 데이터를 처리할 때 연산의 비용(들)을 모니터링하는 것이 포함될 수 있다.
[0049] 블록(545)에서, 파이프라인 최적화기(115)는 파이프라인에서 사용하기 위한 평가된 변환들 중 최상을 선택한다. 즉, 일 실시예에서, 파이프라인 최적화기(115)는 최소 비용을 가진 (원래 연산, 또는 식별된 대안들 중 하나일 수 있는) 함수를 식별한다. 일부 실시예에서, 이러한 결정은 각 비용 메트릭에 대한 클라이언트가 정의한 가중치에 부분적으로 기초하여 이루어진다. 만일 원래 변환이 가장 낮은 비용을 가지고 있으면, 파이프라인 최적화기(115)는 파이프라인의 이 부분을 수정하지 않고 원래 요소를 제자리에 둔다. 그러나, 만일 대안들 중 하나가 더 우수하면, 파이프라인 최적화기(115)는 원래 변환을 식별된 최적의 변환으로 교체하여 파이프라인을 수정할 수 있다. 예를 들면, 파이프라인 최적화기(115)는 원래의 연산보다는 최적화된 버전을 통해 데이터를 라우팅하기 위해 파이프라인의 함수 호출들 또는 다른 요소들을 수정할 수 있다.
[0050] 그런 후, 방법(500)은 블록(550)으로 진행하고, 여기서 파이프라인 최적화기(115)가 원래 파이프라인에 아직 평가되지 않은 적어도 하나의 추가 변환 연산이 있는지 판단한다. 만일 그렇다면, 방법(500)은 블록(515)으로 돌아간다. 만일 원래 파이프라인의 각 단계가 평가되었다면, 방법(500)은 블록(555)으로 계속되고, 여기서 파이프라인 최적화기(115)가 개선된 파이프라인을 반환한다. 일부 실시예에서, 여기에는 (선택된 대체/대안 요소를 포함하여) 수정된 파이프라인에 대해 직렬화된 데이터 파일을 생성하고 이를 클라이언트에 반환하는 것이 포함된다. 일 실시예에서, 대신 시스템은 개선된 파이프라인을 인스턴스화하고 배치된 환경에서 그것을 사용하기 시작하여 클라이언트에 대한 런타임 데이터 처리를 시작할 수 있다.
[0051] 도 6은 본원에 개시된 일 실시예에 따른, 파이프라인 최적화들을 자동으로 평가하고 구현하기 위한 방법(600)을 예시하는 흐름도이다. 방법(600)은 블록(605)에서 시작하며, 여기서 파이프라인 최적화기(115)가 직렬화된 객체들의 원래 파일을 수신한다. 블록(610)에서, 파이프라인 최적화기(115)는 원래 파일에 기초하여 복수의 변환들을 포함하는 원래 파이프라인을 식별한다. 그런 후, 방법(600)은 블록(615)으로 계속되며, 여기서 파이프라인 최적화기(115)가 복수의 변환들 중 제1 변환에 대한 제1 컴퓨팅 비용을 결정한다. 또한, 블록(620)에서, 파이프라인 최적화기(115)는 미리 정의된 최적화를 사용하여 제1 변환을 수정한다. 블록(625)에서, 파이프라인 최적화기(115)는 수정된 제1 변환의 제2 비용을 결정한다. 그런 후, 방법(600)은 블록(630)으로 진행하고, 여기서 제2 비용이 제1 비용보다 낮다고 결정되면, 파이프라인 최적화기(115)가 원래 파이프라인에서 제1 변환을 최적화된 제1 변환으로 대체한다.
[0052] 도 7은 본원에 개시된 일 실시예에 따른, 변환 파이프라인들을 자동으로 평가하고 최적화하도록 구성된 파이프라인 최적화기(115)를 도시하는 블록도이다. 물리적 디바이스로 묘사되어 있지만, 실시예들에서, 파이프라인 최적화기(115)는 가상 디바이스(들)를 사용하여 및/또는 다수의 디바이스에 걸쳐(예를 들어, 클라우드 환경에서) 구현될 수도 있다. 예시된 바와 같이, 파이프라인 최적화기(115)는 프로세서(710), 메모리(715), 스토리지(720), 네트워크 인터페이스(725), 및 하나 이상의 I/O 인터페이스들(730)을 포함한다. 예시된 실시예에서, 프로세서(710)는 메모리(715)에 저장된 프로그래밍 명령들을 검색하고 실행할 뿐만 아니라 스토리지(720)에 상주하는 애플리케이션 데이터를 저장 및 검색한다. 프로세서(710)는 일반적으로 단일 CPU 및/또는 GPU, 다중 CPU들 및/또는 GPU들, 다중 프로세싱 코어를 갖는 단일 CPU 및/또는 GPU 등을 나타낸다. 메모리(715)는 일반적으로 랜덤 액세스 메모리를 나타내기 위해 포함된다. 스토리지(720)는 디스크 드라이브들, 플래시 기반 스토리지 디바이스들 등의 임의의 조합일 수 있으며, 고정 디스크 드라이브들, 이동식 메모리 카드들, 캐시들, 광학 스토리지들, NAS(네트워크 결합 스토리지) 또는 SAN(스토리지 에어리어 네트워크)과 같은 고정 및/또는 이동식 스토리지 디바이스를 포함할 수 있다.
[0053] 일부 실시예에서, 입력 및 출력 디바이스(키보드, 모니터 등)는 I/O 인터페이스(들)(730)를 통해 연결된다. 또한, 네트워크 인터페이스(725)를 통해, 파이프라인 최적화기(115)는 (예를 들어, 인터넷, 로컬 네트워크(들) 등을 포함할 수 있는 네트워크(780)를 통해) 하나 이상의 다른 디바이스들 및 컴포넌트들과 통신 가능하게 결합될 수 있다. 예시된 바와 같이, 프로세서(710), 메모리(715), 스토리지(720), 네트워크 인터페이스(들)(725), 및 I/O 인터페이스(들)(730)는 하나 이상의 버스(775)에 의해 통신 가능하게 결합된다.
[0054] 예시된 실시예에서, 스토리지(720)는 일 세트의 미리 정의된 수정된 변환들(755)을 포함한다. 일부 실시예에서, 이 수정된 변환들(755)은 상이한 방식(예를 들어, 병렬 처리를 이용)으로 하나 이상의 연산을 수행하도록 설계된 사용자 정의 함수들, 변환들, 및 연산들이다. 각 수정된 변환(755)은 처리 중인 기본 데이터에 기초하여 다르게 수행할 수 있다. 적어도 하나의 실시예에서, 각 수정된 변환(755)은 수정을 구현하기 위해 원래 함수에 적용되었거나 적용되어야 하는 수정(들)의 표시를 포함한다. 일부 실시예에서, 각 수정된 변환(755)은 원래 함수를 표시하며, 이를 통해 파이프라인 최적화기(115)는 원래 파이프라인의 각 단계에 대한 관련된/적절한 대안을 쉽게 식별할 수 있다.
[0055] 예시된 실시예에서, 메모리(715)는 최적화기 애플리케이션(735)을 포함한다. 메모리(715)에 상주하는 소프트웨어로 묘사되었지만, 실시예들에서, 최적화기 애플리케이션(735)의 기능은 하드웨어, 소프트웨어, 또는 하드웨어와 소프트웨어의 조합을 사용하여 구현될 수 있다. 예시된 바와 같이, 최적화기 애플리케이션(735)은 파이프라인 컴포넌트(740), 수정 컴포넌트(745), 및 비용 컴포넌트(750)를 포함한다. 개념적 명확성을 위해 별개의 컴포넌트로 묘사되었지만, 실시예들에서, 파이프라인 컴포넌트(740), 수정 컴포넌트(745), 및 비용 컴포넌트(750)의 연산들은 임의의 수의 컴포넌트들 및 디바이스들에 걸쳐 결합되거나 분산될 수 있다.
[0056] 일 실시예에서, 파이프라인 컴포넌트(740)는 하나 이상의 ML 모델과 함께 사용하기 위한 준비로 데이터를 처리하고 변환하는 데 사용되는 파이프라인들(또는 직렬화된 객체들을 포함하는 데이터 파일들)을 수신하도록 구성된다. 그런 후, 파이프라인 컴포넌트(740)는 이 파일/파이프라인을 기반으로 그래프를 구성할 수 있으며, 여기서 그래프의 각 노드는 변환 단계에 해당하고 각 엣지는 단계들 간의 데이터의 흐름을 나타낸다. 일부 실시예에서, 일단 최적의 수정들이 식별되면, 파이프라인 컴포넌트(740)는 필요에 따라 (예를 들어, 원래 변환들을 수정된 것들로 대체함으로써, 포인터들 또는 데이터 흐름을 변경함으로써, 등에 의해) 원래 파이프라인을 수정한다. 그러면, 파이프라인 컴포넌트(740)는 최적화된 파이프라인을 반환할 수 있다.
[0057] 예시된 실시예에서, 수정 컴포넌트(745)는 잠재적인 수정된 변환들(755)을 식별하기 위해 원래 파이프라인의 각 단계를 평가한다. 일부 실시예에서, 위에서 논의된 바와 같이, 수정 컴포넌트(745)는 원래 단계와 동일하거나 유사한 서명을 가진 수정된 변환들(755)을 식별함으로써 그렇게 한다. 적어도 하나의 실시예에서, 수정된 변환들(755)은 대체하도록 의도된 원래 함수(들)를 구체적으로 식별할 수 있다. 일 실시예에서, 비용 컴포넌트(750)는 위에서 논의된 바와 같이 각각의 원래 요소 및 대응하는 대안들의 비용들을 수집하는 데 사용된다. 예를 들면, 비용 컴포넌트(750)는 변환들을 통해 시험 데이터를 실행하고/하거나, 런타임 동안 트랜스포머들이 실제 데이터를 처리할 때 트랜스포머를 모니터링할 수 있다. 이를 통해 비용 컴포넌트(750)는 파이프라인의 각 요소에 대해 가장 낮은 비용의 변환 연산을 식별할 수 있다.
[0058] 본 발명의 다양한 실시예에 대한 설명은 예시의 목적으로 제시되었으며, 완전하거나 개시된 실시예들로 제한하려는 의도가 있는 것은 아니다. 이 기술 분야에서 통상의 지식을 가진 자라면 기술된 실시예들의 범위와 정신을 벗어나지 않으면서 많은 수정들 및 변형들이 있을 수 있다는 것을 명백히 알 수 있을 것이다. 본원에 사용된 용어는 실시예들의 원리, 시장에서 발견되는 기술에 대한 실질적인 응용 또는 기술적 개선을 가장 잘 설명하거나, 또는 이 기술 분야에서 통상의 지식을 가진 자가 본원에 개시된 실시예들을 이해할 수 있도록 하기 위해 선택되었다.
[0059] 이전 및/또는 다음에서, 본 발명내용에 제시된 실시예들에 대한 참조가 이루어진다. 그러나, 본 발명내용의 범위는 설명된 특정 실시예들에 제한되지 않는다. 대신, 상이한 실시예들과 관련이 있든 없든, 특징들 및 요소들의 임의의 조합은 고려하는 실시예들을 구현하고 실시하도록 고려된다. 또한, 본원에 개시된 실시예들이 다른 가능한 솔루션들 또는 종래 기술에 비해 이점들을 달성할 수 있지만, 특정 이점이 주어진 실시예에 의해 달성되는지 여부는 본 발명내용의 범위를 제한하지 않는다. 따라서, 본원에서 논의된 양태들, 특징들, 실시예들 및 이점들은 단지 예시일 뿐이며 청구범위에서 명시적으로 인용된 경우를 제외하고는 첨부된 청구범위의 요소들 또는 제한들로 간주되지 않는다. 마찬가지로, “발명”에 대한 언급은 본원에 개시된 진보성 있는 주제의 일반화로 해석되어서는 안 되며 청구범위에서 명시적으로 인용된 경우를 제외하고는 첨부된 청구범위의 요소 또는 제한으로 간주되지 않는다.
[0060] 본 발명의 양태들은 전적으로 하드웨어 실시예, 전적으로 소프트웨어 실시예(펌웨어, 상주 소프트웨어, 마이크로코드 등 포함) 또는 소프트웨어 및 하드웨어 양태들을 결합한 실시예의 형태를 취할 수 있으며, 이들은 모두 일반적으로 본원에서 “회로”, “모듈” 또는 “시스템”으로 지칭될 수 있다.
[0061] 본 발명은 시스템, 방법, 및/또는 컴퓨터 프로그램 제품일 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독 가능 스토리지 매체를 포함할 수 있으며, 이 매체 상에 프로세서가 본 발명의 양태들을 수행하도록 하는 컴퓨터 판독 가능 프로그램 명령들을 갖는다.
[0062] 컴퓨터 판독 가능 스토리지 매체는 명령 실행 디바이스에 의해 사용될 명령들을 유지 및 저장할 수 있는 유형의(tangible) 디바이스일 수 있다. 컴퓨터 판독 가능 스토리지 매체는, 예를 들어, 전자 스토리지 디바이스, 자기 스토리지 디바이스, 광 스토리지 디바이스, 전자기 스토리지 디바이스, 반도체 스토리지 디바이스, 또는 전술한 것들의 모든 적절한 조합일 수 있으며, 그러나 이에 한정되지는 않는다. 컴퓨터 판독 가능 스토리지 매체의 더 구체적인 예들의 비포괄적인 목록에는 다음이 포함된다: 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM), 소거 및 프로그램가능 읽기 전용 메모리(EPROM 또는 플래시 메모리), 정적 랜덤 액세스 메모리(SRAM), 휴대용 컴팩트 디스크 읽기 전용 메모리(CD-ROM), 디지털 다용도 디스크(DVD), 메모리 스틱, 플로피 디스크, 천공-카드들 또는 명령들이 기록된 홈에 있는 융기된 구조들 같이 기계적으로 인코팅된 디바이스, 및 전술한 것들의 모든 적절한 조합. 본원에서 사용되는 컴퓨터 판독 가능 스토리지 매체는 무선 전파들이나 다른 자유롭게 전파되는 전자기파들, 도파관이나 기타 전송 매체를 통해 전파되는 전자기파들(예를 들어, 광섬유 케이블을 통해 전달되는 광 펄스들), 또는 선(wire)을 통해 전송되는 전기 신호들 같이 그 자체로 일시적인(transitory) 신호들로 해석되지는 않는다.
[0063] 본원에 기술되는 컴퓨터 판독 가능 프로그램 명령들은, 예를 들어, 인터넷, 근거리 통신망, 광역 통신망 및/또는 무선 네트워크 등의 통신망(네트워크)을 통해 컴퓨터 판독 가능 스토리지 매체로부터 각각 컴퓨팅/처리 디바이스들로 또는 외부 컴퓨터 또는 외부 스토리지 디바이스로 다운로드될 수 있다. 상기 통신망은 구리 전송 케이블들, 광 전송 섬유들, 무선 전송, 라우터들, 방화벽들, 스위치들, 게이트웨이 컴퓨터들 및/또는 엣지 서버들을 포함할 수 있다. 각 컴퓨팅/처리 디바이스 내 네트워크 어댑터 카드 또는 네트워크 인터페이스는 상기 통신망으로부터 컴퓨터 판독 가능 프로그램 명령들을 수신하고 그 컴퓨터 판독 가능 프로그램 명령들을 각각의 컴퓨팅/처리 디바이스 내의 컴퓨터 판독 가능 스토리지 매체에 저장하기 위해 전송한다.
[0064] 본 발명의 연산들을 실행하기 위한 컴퓨터 판독 가능 프로그램 명령들은 Smalltalk, C++ 또는 그와 유사한 언어 등의 객체 지향 프로그래밍 언어와 “C” 프로그래밍 언어 또는 그와 유사한 언어 등의 종래의 절차적 프로그래밍 언어들을 포함하여, 하나 이상의 프로그래밍 언어들을 조합하여 작성된(written) 어셈블러 명령들, 명령-세트-아키텍처(ISA) 명령들, 머신 명령들, 머신 종속 명령들, 마이크로코드, 펌웨어 명령들, 상태-셋팅 데이터, 또는 소스 코드나 목적 코드일 수 있다. 컴퓨터 판독 가능 프로그램 명령들은 전적으로 사용자의 컴퓨터상에서, 부분적으로 사용자의 컴퓨터상에서, 독립형(stand-alone) 소프트웨어 패키지로서, 부분적으로 사용자의 컴퓨터상에서 그리고 부분적으로 원격 컴퓨터상에서 또는 전적으로 원격 컴퓨터나 서버상에서 실행될 수 있다. 위에서 마지막의 경우에, 원격 컴퓨터는 근거리 통신망(LAN) 또는 광역 통신망(WAN)을 포함한 모든 종류의 네트워크를 통해서 사용자의 컴퓨터에 접속될 수 있고, 또는 이 접속은 (예를 들어, 인터넷 서비스 제공자를 이용한 인터넷을 통해서) 외부 컴퓨터에 이루어질 수도 있다. 일부 실시예에서, 예를 들어 프로그램 가능 논리 회로, 필드-프로그램 가능 게이트 어레이들(FPGA), 또는 프로그램 가능 논리 어레이들(PLA)을 포함한 전자 회로는 본 발명의 양태들을 수행하기 위해 전자 회로를 맞춤화하도록 상기 컴퓨터 판독 가능 프로그램 명령들의 상태 정보를 활용하여 상기 컴퓨터 판독 가능 프로그램 명령들을 실행할 수 있다.
[0065] 본원에서는 본 발명의 실시예들에 따른 방법들, 장치들(시스템들), 및 컴퓨터 프로그램 제품들의 흐름 예시도들 및/또는 블록도들을 참조하여 본 발명의 양태들을 기술한다. 흐름 예시도들 및/또는 블록도들의 각 블록과 흐름 예시도들 및/또는 블록도들 내 블록들의 조합들은 컴퓨터 판독 가능 프로그램 명령들에 의해 구현될 수 있다는 것을 이해할 수 있을 것이다.
[0066] 이들 컴퓨터 판독 가능 프로그램 명령들은 범용 컴퓨터, 특수목적용 컴퓨터, 또는 기타 프로그램가능 데이터 처리 장치의 프로세서에 제공되어 머신(machine)을 생성하고, 그렇게 하여 그 명령들이 상기 컴퓨터 또는 기타 프로그램가능 데이터 처리 장치의 프로세서를 통해서 실행되어, 상기 흐름도 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현하기 위한 수단을 생성할 수 있다. 이들 컴퓨터 판독 가능 프로그램 명령들은 또한 컴퓨터 판독 가능 스토리지 매체에 저장될 수 있으며, 컴퓨터, 프로그램가능 데이터 처리 장치 및/또는 기타 디바이스들에 지시하여 명령들이 저장된 상기 컴퓨터 판독 가능 스토리지 매체가 상기 흐름도 및/또는 블록도의 블록 또는 블록들에 명시된 기능/동작의 양태들을 구현하는 명령들을 포함하는 제조품(an article of manufacture)을 포함하도록 특정한 방식으로 기능하게 할 수 있다.
[0067] 컴퓨터 판독 가능 프로그램 명령들은 또한 컴퓨터, 기타 프로그램가능 데이터 처리 장치, 또는 다른 디바이스에 로드 되어, 상기 컴퓨터, 기타 프로그램가능 장치 또는 다른 디바이스에서 일련의 연산 단계들이 수행되게 하여 컴퓨터 구현 프로세스를 생성하며, 그렇게 하여 상기 컴퓨터, 기타 프로그램가능 장치, 또는 다른 디바이스 상에서 실행되는 명령들이 흐름도 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현할 수 있다.
[0068] 도면들 내 흐름도 및 블록도들은 본 발명의 여러 실시예들에 따른 시스템들, 방법들 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍처, 기능(functionality), 및 연산(operation)을 예시한다. 이와 관련하여, 상기 흐름도 또는 블록도들 내 각 블록은 상기 명시된 논리적 기능(들)을 구현하기 위한 하나 이상의 실행 가능한 명령들을 포함한 모듈, 세그먼트 또는 명령들의 일부분을 나타낼 수 있다. 일부 다른 구현들에서, 상기 블록에 언급되는 기능들은 도면들에 언급된 순서와 다르게 일어날 수도 있다. 예를 들면, 연속으로 도시된 두 개의 블록은 실제로는 사실상 동시에 실행될 수도 있고, 또는 이 두 블록은 때때로 관련된 기능에 따라서는 역순으로 실행될 수도 있다. 블록도들 및/또는 흐름 예시도의 각 블록, 및 블록도들 및/또는 흐름 예시도 내 블록들의 조합들은 특수목적용 하드웨어 및 컴퓨터 명령들의 명시된 기능들 또는 동작들, 또는 이들의 조합들을 수행하는 특수목적용 하드웨어-기반 시스템들에 의해 구현될 수 있다는 것에 또한 주목해야 한다.
[0069] 본 발명의 실시예들은 클라우드 컴퓨팅 인프라스트럭처를 통해 최종 사용자들에게 제공될 수 있다. 클라우드 컴퓨팅은 일반적으로 네트워크를 통해 서비스로 확장 가능한 컴퓨팅 리소스를 제공하는 것을 말한다. 보다 공식적으로, 클라우드 컴퓨팅은 컴퓨팅 리소스와 그의 기본 기술 아키텍처(예를 들어, 서버, 스토리지, 네트워크) 간에 추상화를 제공하는 컴퓨팅 능력으로 정의될 수 있으며, 최소한의 관리 노력 또는 서비스 제공자와의 상호작용으로 빠르게 프로비저닝 및 해제될 수 있는, 구성 가능한(configurable) 컴퓨팅 리소스들의 공유 풀에 대한 편리한 주문형(on-demand) 네트워크 액세스를 가능하게 한다. 따라서, 클라우드 컴퓨팅을 통해 사용자는 컴퓨팅 리소스를 제공하는 데 사용되는 기본 물리적인 시스템(또는 그 시스템의 위치)에 관계 없이 가상 컴퓨팅 리소스(예를 들어, 스토리지, 데이터, 애플리케이션, 및 완전히 가상화된 컴퓨팅 시스템까지)에 액세스할 수 있다.
[0070] 통상적으로, 클라우드 컴퓨팅 리소스는 종량제 방식으로 사용자에게 제공되며, 여기서 사용자는 실제로 사용한 컴퓨팅 리소스(예를 들어, 사용자가 소비한 스토리지 공간의 양 또는 사용자가 인스턴스화한 가상화 시스템의 수)에 대해서만 비용이 청구된다. 사용자는 인터넷을 통해 언제 어디서나 클라우드에 있는 모든 리소스에 액세스할 수 있다. 본 발명의 맥락에서, 사용자는 클라우드에서 애플리케이션(예를 들어, 최적화기 애플리케이션(735)) 또는 이용 가능한 관련 데이터에 액세스할 수 있다. 예를 들면, 최적화기 애플리케이션(735)은 클라우드의 컴퓨팅 시스템에서 실행되어 데이터 파이프라인들을 분석하고 개선할 수 있다. 이러한 경우에, 최적화기 애플리케이션(735)은 그러한 파이프라인들을 수신하고 최적화하여, 개선된 파이프라인들과 미리 정의된 수정들을 클라우드의 스토리지 위치에 저장할 수 있다. 그렇게 하면 사용자는 클라우드에 연결된 네트워크(예를 들어, 인터넷)에 연결된 모든 컴퓨팅 시스템에서 이 정보에 액세스할 수 있다.
[0071] 전술한 내용은 본 발명의 실시예들에 관한 것이지만, 본 발명의 기본 범위를 벗어나지 않고 본 발명의 다른 및 추가 실시예가 고안될 수 있으며, 본 발명의 범위는 다음 청구범위에 의해 결정된다.

Claims (20)

  1. 방법으로서, 상기 방법은:
    직렬화된 객체들의 원래 파일을 수신하는 단계;
    상기 원래 파일에 기초하여 복수의 변환들을 포함하는 원래 파이프라인을 식별하는 단계;
    상기 복수의 변환들의 제1 변환에 대한 제1 컴퓨팅 비용을 결정하는 단계;
    미리 정의된 최적화를 사용하여 상기 제1 변환을 수정하는 단계;
    상기 수정된 제1 변환의 제2 비용을 결정하는 단계; 및
    상기 제2 비용이 상기 제1 비용보다 낮다고 결정되면, 상기 원래 파이프라인에서 상기 제1 변환을 상기 최적화된 제1 변환으로 대체하는 단계를 포함하는,
    방법.
  2. 제1항에 있어서,
    상기 원래 파이프라인을 식별하는 단계는 데이터 처리 그래프를 생성하는 단계를 포함하고, 여기서 상기 데이터 처리 그래프에서 각각의 버텍스는 상기 복수의 변환들의 각각의 변환을 나타내며, 상기 데이터 처리 그래프에서 각각의 엣지는 상기 원래 파이프라인에서 데이터 흐름을 명시하는,
    방법.
  3. 제2항에 있어서,
    상기 데이터 처리 그래프를 생성하는 단계는:
    상기 원래 파일에 기초하여 상기 원래 파이프라인을 인스턴스화하는 단계;
    샘플 데이터에 대해 상기 원래 파이프라인을 실행하는 단계;
    상기 실행에 기초하여 상기 복수의 변환들을 식별하는 단계; 및
    상기 실행에 기초하여 일련의 상기 복수의 변환들을 식별하는 단계를 포함하는,
    방법.
  4. 제2항에 있어서,
    상기 데이터 처리 그래프를 생성하는 단계는 상기 원래 파이프라인을 인스턴스화하지 않고 상기 원래 파이프라인에서 상기 복수의 변환들 및 상기 데이터 흐름을 식별하기 위해 상기 원래 파일을 평가하는 단계를 포함하는,
    방법.
  5. 제1항에 있어서,
    상기 제1 변환에 대한 상기 제1 컴퓨팅 비용을 결정하는 단계는:
    샘플 데이터에 대해 상기 제1 변환을 실행하는 단계; 및
    상기 실행을 평가하여 상기 제1 변환을 수행하는 것의 대기 시간을 결정하는 단계를 포함하는,
    방법.
  6. 제1항에 있어서,
    상기 미리 정의된 최적화는 상기 제1 변환에서 증가된 병렬화를 포함하는,
    방법.
  7. 제1항에 있어서,
    상기 미리 정의된 최적화는 상기 제1 변환에 대한 단일 행 최적화를 포함하는,
    방법.
  8. 제1항에 있어서, 상기 방법은:
    상기 원래 파이프라인 및 상기 최적화된 제1 변환에 기초하여 직렬화된 객체들의 최적화된 파일을 생성하는 단계를 더 포함하는,
    방법.
  9. 컴퓨터 프로그램 코드를 집합적으로 포함하는 하나 이상의 컴퓨터 판독 가능 스토리지 매체로서,
    상기 컴퓨터 프로그램 코드는: 하나 이상의 컴퓨터 프로세서의 연산에 의해 실행될 때,
    직렬화된 객체들의 원래 파일을 수신하는 단계;
    상기 원래 파일에 기초하여 복수의 변환들을 포함하는 원래 파이프라인을 식별하는 단계;
    상기 복수의 변환들의 제1 변환에 대한 제1 컴퓨팅 비용을 결정하는 단계;
    미리 정의된 최적화를 사용하여 상기 제1 변환을 수정하는 단계;
    상기 수정된 제1 변환의 제2 비용을 결정하는 단계; 및
    상기 제2 비용이 상기 제1 비용보다 낮다고 결정되면, 상기 원래 파이프라인에서 상기 제1 변환을 상기 최적화된 제1 변환으로 대체하는 단계를 포함하는, 연산을 수행하는,
    컴퓨터 판독 가능 스토리지 매체.
  10. 제9항에 있어서,
    상기 원래 파이프라인을 식별하는 단계는 데이터 처리 그래프를 생성하는 단계를 포함하고, 여기서 상기 데이터 처리 그래프에서 각각의 버텍스는 상기 복수의 변환들의 각각의 변환을 나타내며, 상기 데이터 처리 그래프에서 각각의 엣지는 상기 원래 파이프라인에서 데이터 흐름을 명시하는,
    컴퓨터 판독 가능 스토리지 매체.
  11. 제10항에 있어서,
    상기 데이터 처리 그래프를 생성하는 단계는:
    상기 원래 파일에 기초하여 상기 원래 파이프라인을 인스턴스화하는 단계;
    샘플 데이터에 대해 상기 원래 파이프라인을 실행하는 단계;
    상기 실행에 기초하여 상기 복수의 변환들을 식별하는 단계; 및
    상기 실행에 기초하여 일련의 상기 복수의 변환들을 식별하는 단계를 포함하는,
    컴퓨터 판독 가능 스토리지 매체.
  12. 제10항에 있어서,
    상기 데이터 처리 그래프를 생성하는 단계는 상기 원래 파이프라인을 인스턴스화하지 않고 상기 원래 파이프라인에서 상기 복수의 변환들 및 상기 데이터 흐름을 식별하기 위해 상기 원래 파일을 평가하는 단계를 포함하는 것을 특징으로 하는,
    컴퓨터 판독 가능 스토리지 매체.
  13. 제9항에 있어서,
    상기 제1 변환에 대한 상기 제1 컴퓨팅 비용을 결정하는 단계는:
    샘플 데이터에 대해 상기 제1 변환을 실행하는 단계; 및
    상기 실행을 평가하여 상기 제1 변환을 수행하는 것의 대기 시간을 결정하는 단계를 포함하는,
    컴퓨터 판독 가능 스토리지 매체.
  14. 제9항에 있어서,
    상기 미리 정의된 최적화는 (i) 상기 제1 변환에 증가된 병렬화, 또는 (ii) 상기 제1 변환에 대한 단일 행 최적화를 포함하는,
    컴퓨터 판독 가능 스토리지 매체.
  15. 제9항에 있어서,
    상기 연산은, 상기 원래 파이프라인 및 상기 최적화된 제1 변환에 기초하여 직렬화된 객체들의 최적화된 파일을 생성하는 단계를 더 포함하는,
    컴퓨터 판독 가능 스토리지 매체.
  16. 시스템으로서, 상기 시스템은:
    하나 이상의 컴퓨터 프로세서; 및
    상기 하나 이상의 컴퓨터 프로세서에 의해 실행될 때 연산을 수행하는 하나 이상의 프로그램을 집합적으로 포함하는 하나 이상의 메모리를 포함하되,
    상기 연산은:
    직렬화된 객체들의 원래 파일을 수신하는 단계;
    상기 원래 파일에 기초하여 복수의 변환들을 포함하는 원래 파이프라인을 식별하는 단계;
    상기 복수의 변환들의 제1 변환에 대한 제1 컴퓨팅 비용을 결정하는 단계;
    미리 정의된 최적화를 사용하여 상기 제1 변환을 수정하는 단계;
    상기 수정된 제1 변환의 제2 비용을 결정하는 단계; 및
    상기 제2 비용이 상기 제1 비용보다 낮다고 결정되면, 상기 원래 파이프라인에서 상기 제1 변환을 상기 최적화된 제1 변환으로 대체하는 단계를 포함하는,
    시스템.
  17. 제16항에 있어서,
    상기 원래 파이프라인을 식별하는 단계는 데이터 처리 그래프를 생성하는 단계를 포함하고, 여기서 상기 데이터 처리 그래프에서 각각의 버텍스는 상기 복수의 변환들의 각각의 변환을 나타내며, 상기 데이터 처리 그래프에서 각각의 엣지는 상기 원래 파이프라인에서 데이터 흐름을 명시하는,
    시스템.
  18. 제17항에 있어서,
    상기 데이터 처리 그래프를 생성하는 단계는:
    상기 원래 파일에 기초하여 상기 원래 파이프라인을 인스턴스화하는 단계;
    샘플 데이터에 대해 상기 원래 파이프라인을 실행하는 단계;
    상기 실행에 기초하여 상기 복수의 변환들을 식별하는 단계; 및
    상기 실행에 기초하여 일련의 상기 복수의 변환들을 식별하는 단계를 포함하는,
    시스템.
  19. 제17항에 있어서,
    상기 데이터 처리 그래프를 생성하는 단계는 상기 원래 파이프라인을 인스턴스화하지 않고 상기 원래 파이프라인에서 상기 복수의 변환들 및 상기 데이터 흐름을 식별하기 위해 상기 원래 파일을 평가하는 단계를 포함하는,
    시스템.
  20. 제16항에 있어서,
    상기 제1 변환에 대한 상기 제1 컴퓨팅 비용을 결정하는 단계는:
    샘플 데이터에 대해 상기 제1 변환을 실행하는 단계; 및
    상기 실행을 평가하여 상기 제1 변환을 수행하는 것의 대기 시간을 결정하는 단계를 포함하는,
    시스템.
KR1020227039859A 2020-06-02 2021-05-14 머신 러닝 워크로드를 위한 데이터 처리 최적화 간소화 KR20230002749A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/890,091 2020-06-02
US16/890,091 US11574249B2 (en) 2020-06-02 2020-06-02 Streamlining data processing optimizations for machine learning workloads
PCT/CN2021/093933 WO2021244261A1 (en) 2020-06-02 2021-05-14 Streamlining data processing optimizations for machine learning workloads

Publications (1)

Publication Number Publication Date
KR20230002749A true KR20230002749A (ko) 2023-01-05

Family

ID=78705083

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227039859A KR20230002749A (ko) 2020-06-02 2021-05-14 머신 러닝 워크로드를 위한 데이터 처리 최적화 간소화

Country Status (9)

Country Link
US (1) US11574249B2 (ko)
JP (1) JP2023528211A (ko)
KR (1) KR20230002749A (ko)
CN (1) CN115803757A (ko)
AU (1) AU2021285952B2 (ko)
DE (1) DE112021001767T5 (ko)
GB (1) GB2610543A (ko)
IL (1) IL297397A (ko)
WO (1) WO2021244261A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11929901B2 (en) * 2021-04-22 2024-03-12 Salesforce, Inc. Infrastructure-agnostic performance of computation sequences
US11874835B2 (en) * 2021-11-08 2024-01-16 Sap Se Scheduling of query pipeline execution

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU5688199A (en) * 1998-08-20 2000-03-14 Raycer, Inc. System, apparatus and method for spatially sorting image data in a three-dimensional graphics pipeline
US8732679B2 (en) * 2010-03-16 2014-05-20 Qualcomm Incorporated Loop transformation for computer compiler optimization
US9916538B2 (en) * 2012-09-15 2018-03-13 Z Advanced Computing, Inc. Method and system for feature detection
US9256969B2 (en) 2013-02-01 2016-02-09 Microsoft Technology Licensing, Llc Transformation function insertion for dynamically displayed tracer data
DE102016212693A1 (de) 2016-07-12 2018-01-18 Infineon Technologies Dresden Gmbh Drucksensorvorrichtung und Herstellungsverfahren
US11694066B2 (en) 2017-10-17 2023-07-04 Xilinx, Inc. Machine learning runtime library for neural network acceleration
US20200242510A1 (en) * 2019-01-30 2020-07-30 International Business Machines Corporation System for constructing effective machine-learning pipelines with optimized outcomes
EP3702974A1 (en) * 2019-02-27 2020-09-02 Ovh Systems and methods for operating a data center based on a generated machine learning pipeline
CN110111084A (zh) 2019-05-16 2019-08-09 上饶市中科院云计算中心大数据研究院 一种政务服务热线分析方法及系统
WO2020247499A1 (en) * 2019-06-03 2020-12-10 Cerebri AI Inc. Machine learning pipeline optimization
US20210055915A1 (en) * 2019-08-23 2021-02-25 Google Llc No-coding machine learning pipeline
US11620157B2 (en) * 2019-10-18 2023-04-04 Splunk Inc. Data ingestion pipeline anomaly detection
CN111191771A (zh) 2019-12-29 2020-05-22 浪潮(北京)电子信息产业有限公司 一种数据处理方法、装置、设备及存储介质

Also Published As

Publication number Publication date
GB202218915D0 (en) 2023-02-01
US20210374602A1 (en) 2021-12-02
AU2021285952A1 (en) 2022-10-27
JP2023528211A (ja) 2023-07-04
WO2021244261A1 (en) 2021-12-09
US11574249B2 (en) 2023-02-07
IL297397A (en) 2022-12-01
DE112021001767T5 (de) 2023-01-12
AU2021285952B2 (en) 2023-05-11
GB2610543A (en) 2023-03-08
CN115803757A (zh) 2023-03-14

Similar Documents

Publication Publication Date Title
US11782926B2 (en) Automated provisioning for database performance
US11074107B1 (en) Data processing system and method for managing AI solutions development lifecycle
US11948003B2 (en) System and method for automated production and deployment of packaged AI solutions
US11449670B2 (en) Iterative development and/or scalable deployment of a spreadsheet-based formula algorithm
US11386128B2 (en) Automatic feature learning from a relational database for predictive modelling
EP3451190B1 (en) Model-based analysis in a relational database
US20150169808A1 (en) Enterprise-scalable model-based analytics
US11861469B2 (en) Code generation for Auto-AI
US11521076B2 (en) Architecture-independent approximation discovery
KR20230002749A (ko) 머신 러닝 워크로드를 위한 데이터 처리 최적화 간소화
US20230034173A1 (en) Incident resolution
CN112036563A (zh) 使用起源数据的深度学习模型洞察
Sinthong et al. Aframe: Extending dataframes for large-scale modern data analysis
Fursin et al. Collective Mind, Part II: Towards performance-and cost-aware software engineering as a natural science
WO2020038376A1 (zh) 统一地执行特征抽取的方法及系统
Noorshams Modeling and prediction of i/o performance in virtualized environments
US20220383183A1 (en) Machine learning pipeline optimization
US20230177351A1 (en) Accelerating decision tree inferences based on tensor operations
US20230195427A1 (en) Dialogue- and machine learning-facilitated code development
US20230169354A1 (en) Annotation of a Machine Learning Pipeline with Operational Semantics to Support Distributed Lineage Tracking
US20230169408A1 (en) Annotation of a Machine Learning Pipeline with Operational Semantics
US20220383095A1 (en) Optimizing operator granularity in compiling and converting artificial intelligence (ai) models
Wang et al. RPig: Concise Programming Framework by Integrating R with Pig for Big Data Analytics
Georgiadis An evaluation and performance comparison of different approaches for data stream processing
Petros Design and Implementation of a Knowledge Generation and Visualization Tool Over the Sap Hana Platform in the" Big Data" Context

Legal Events

Date Code Title Description
A201 Request for examination