KR102320755B1 - On-device machine learning platform - Google Patents

On-device machine learning platform Download PDF

Info

Publication number
KR102320755B1
KR102320755B1 KR1020197035504A KR20197035504A KR102320755B1 KR 102320755 B1 KR102320755 B1 KR 102320755B1 KR 1020197035504 A KR1020197035504 A KR 1020197035504A KR 20197035504 A KR20197035504 A KR 20197035504A KR 102320755 B1 KR102320755 B1 KR 102320755B1
Authority
KR
South Korea
Prior art keywords
machine learning
application
training
computing device
platform
Prior art date
Application number
KR1020197035504A
Other languages
Korean (ko)
Other versions
KR20200002034A (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 KR20200002034A publication Critical patent/KR20200002034A/en
Application granted granted Critical
Publication of KR102320755B1 publication Critical patent/KR102320755B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • G06N5/048Fuzzy inferencing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Abstract

본 개시는 온-디바이스 기계 학습을 위한 시스템 및 방법을 제공한다. 특히, 본 개시는 온-디바이스 기계 학습 플랫폼 및 온-디바이스 예측, 트레이닝, 예제 수집 및/또는 다른 기계 학습 태스크 또는 기능을 가능하게 하는 관련 기술에 관한 것이다. 온-디바이스 기계 학습 플랫폼은 컨텍스트 특징을 수집된 트레이닝 예제 및/또는 예측/추론을 생성하는데 사용되는 클라이언트-제공 입력 데이터에 안전하게 삽입하는 컨텍스트 제공자를 포함할 수 있다. 따라서, 온-디바이스 기계 학습 플랫폼은 중앙 집중식 트레이닝 예제 수집, 모델 트레이닝 및 기계 학습 모델의 사용을 어플리케이션 또는 다른 클라이언트에 대한 서비스로서 사용할 수 있다.The present disclosure provides systems and methods for on-device machine learning. In particular, this disclosure relates to on-device machine learning platforms and related technologies that enable on-device prediction, training, example collection, and/or other machine learning tasks or functions. The on-device machine learning platform may include a context provider that securely inserts context features into the collected training examples and/or client-supplied input data used to generate predictions/inferences. Thus, an on-device machine learning platform can use centralized training example collection, model training, and use of machine learning models as a service to applications or other clients.

Figure R1020197035504
Figure R1020197035504

Description

온-디바이스 기계 학습 플랫폼On-device machine learning platform

본 발명는 일반적으로 기계 학습에 관한 것이다. 보다 구체적으로, 본 발명는 온-디바이스 기계 학습 플랫폼 및 온-디바이스 예측, 트레이닝, 예제 수집 및/또는 다른 기계 학습 태스크 또는 기능을 가능하게 하는 관련 기술에 관한 것이다.The present invention relates generally to machine learning. More specifically, the present invention relates to on-device machine learning platforms and related technologies that enable on-device prediction, training, example collection, and/or other machine learning tasks or functions.

최근, 컴퓨팅 디바이스의 사용자에게 개선된 서비스를 제공하기 위해 기계 학습이 점점 더 많이 사용되고 있다. 특히, 많은 애플리케이션 또는 다른 컴퓨팅 프로그램 또는 시스템은 하나 이상의 기계 학습 모델에 의존하여 프로그램, 디바이스 및/또는 사용자와 관련된 입력 데이터에 기초하여 추론을 생성한다. 애플리케이션(들)은 추론을 사용하여 모든 유형의 태스크 또는 서비스를 수행하거나 영향을 줄 수 있다.In recent years, machine learning is increasingly used to provide improved services to users of computing devices. In particular, many applications or other computing programs or systems rely on one or more machine learning models to generate inferences based on input data related to programs, devices, and/or users. The application(s) may use inference to perform or affect any type of task or service.

기계 학습 문제를 해결하기 위한 하나의 종래 트레이닝 방식은 중앙 집중식 위치(예를 들어, 서버 디바이스)에서 복수의 컴퓨팅 디바이스(예를 들어, 스마트 폰과 같은 사용자 디바이스)로부터 복수의 트레이닝 예제를 수집하는 것을 포함한다. 이후 수집된 교육 예제에 기초하여 중앙 집중식(centralized) 위치에서 기계 학습 모델이 트레이닝될 수 있다.One conventional training approach for solving machine learning problems involves collecting a plurality of training examples from a plurality of computing devices (eg, user devices such as smart phones) in a centralized location (eg, a server device). include Thereafter, a machine learning model may be trained at a centralized location based on the collected training examples.

또한, 일부 경우, 트레이닝된 모델은 중앙 집중식 위치에 저장될 수 있다. 모델로부터 추론을 수신하기 위해, 사용자 컴퓨팅 디바이스는 입력 데이터를 네트워크를 통해 서버 컴퓨팅 디바이스로 전송하고, 서버 디바이스가 기계 학습 모델을 구현하여 그 전송된 데이터에 기초하여 추론(들)을 생성할 때까지 기다린 다음, 네트워크를 통해 다시 서버 컴퓨팅 디바이스로부터 추론(들)을 수신한다.Also, in some cases, the trained model may be stored in a centralized location. To receive inference from the model, the user computing device transmits input data to the server computing device via the network, until the server device implements the machine learning model to generate inference(s) based on the transmitted data. It waits and then receives the inference(s) from the server computing device back over the network.

이러한 시나리오에서, 트레이닝 예제(들) 및/또는 추론(들)은 네트워크를 통해 사용자 컴퓨팅 디바이스와 서버 컴퓨팅 디바이스 사이에서 전송될 것이 요구된다. 이러한 네트워크 전송은 네트워크를 통해 전송된 데이터가 인터셉트되기 쉬울 수 있으므로 데이터 보안 위험을 나타낸다. 게다가, 이러한 네트워크 전송은 통신 속도를 저하시킬 수 있는 네트워크 트래픽을 증가시킨다. 또한, 네트워크를 통한 데이터 송수신과 관련된 레이턴시는 애플리케이션의 서비스 제공시 지연을 유발할 수 있다.In such a scenario, training example(s) and/or inference(s) are required to be transmitted between the user computing device and the server computing device over a network. Such network transmissions represent a data security risk as data transmitted over the network may be susceptible to interception. In addition, these network transmissions increase network traffic, which can slow down communication speeds. In addition, latency related to data transmission/reception through the network may cause a delay in providing an application service.

보다 최근에, 특정 애플리케이션은 애플리케이션 내에 저장되고 사용자 디바이스상의 애플리케이션에 의해 구현되는 기계 학습 모델을 포함하고 있다. 그러나, 이 아키텍처는 구현 및 리소스 집약적인 문제가 있다. 예를 들어, 이러한 시나리오에서, 애플리케이션은 하나 이상의 기계 학습 모델을 저장, 관리, 트레이닝 및/또는 구현을 요구한다. 애플리케이션 자체 내에 모델과 해당 지원 서비스를 포함하면 애플리케이션의 데이터 사이즈가 커져 더 큰 메모리 공간을 차지한다.More recently, specific applications include machine learning models that are stored within applications and implemented by applications on user devices. However, this architecture suffers from implementation and resource intensive issues. For example, in such a scenario, the application requires storing, managing, training, and/or implementing one or more machine learning models. Including the model and its supporting services within the application itself increases the data size of the application and takes up more memory space.

애플리케이션 내의 기계 학습은 또한 더 빈번한 애플리케이션 업데이트를 요구할 수 있다. 예를 들어, 기본 기계 학습 엔진이 업데이트되거나 발전함에 따라 애플리케이션이 업데이트되도록 요구될 수 있다. 애플리케이션 업데이트는 그 업데이트가 다운로드되어 설치될 때 바람직하지 않게 사용자에게 네트워크 사용 및 중단을 요구할 수 있다.Machine learning within an application may also require more frequent application updates. For example, an application may be required to be updated as the underlying machine learning engine is updated or evolved. An application update may undesirably require the user to use and stop the network when the update is downloaded and installed.

또한, 애플리케이션 자체에 추가 서비스가 구축되어야 하므로 애플리케이션 내의 기계 학습으로 인해 애플리케이션 개발이 복잡해질 수 있다. 따라서, 개발자는 다른 기계 학습 엔진의 복잡한 내용을 학습하고 유지해야 할 수도 있다.Additionally, application development can be complicated by machine learning within the application as additional services must be built into the application itself. As such, developers may have to learn and maintain the complexities of other machine learning engines.

본 개시의 실시예들의 양태 및 이점은 다음의 설명에서 부분적으로 설명될 것이거나, 설명으로부터 배울 수 있거나, 실시예들의 실시를 통해 학습될 수 있다.Aspects and advantages of embodiments of the present disclosure will be set forth in part in the description that follows, may be learned from the description, or may be learned through practice of the embodiments.

본 개시의 하나의 예시적인 양태는 컴퓨팅 디바이스에 관한 것이다. 컴퓨팅 디바이스는 하나 이상의 프로세서 및 하나 이상의 비-일시적 컴퓨터 판독 가능 매체를 포함한다. 하나 이상의 비-일시적 컴퓨터 판독 가능 매체는 하나 이상의 프로세서에 의해 구현된 하나 이상의 애플리케이션과; 하나 이상의 기계 학습 모델과; 하나 이상의 프로세서에 의해 실행될 때, 컴퓨팅 디바이스로 하여금 동작들을 수행하는 온-디바이스 기계 학습 플랫폼을 구현하게 하는 명령들을 저장한다. 동작들은 예측 애플리케이션 프로그래밍 인터페이스를 통해 하나 이상의 애플리케이션 중 제1 애플리케이션으로부터 입력 데이터를 수신하는 단계를 포함한다. 동작들은 입력 데이터에 적어도 부분적으로 기초하여 적어도 하나의 추론을 생성하기 위해 하나 이상의 기계 학습 모델 중 적어도 제1 기계 학습 모델을 이용하는 단계를 포함한다. 동작들은 제1 기계 학습 모델에 의해 생성된 적어도 하나의 추론을 예측 애플리케이션 프로그래밍 인터페이스를 통해 제1 애플리케이션으로 제공하는 단계를 포함한다.One illustrative aspect of the present disclosure relates to a computing device. A computing device includes one or more processors and one or more non-transitory computer-readable media. The one or more non-transitory computer-readable media may include one or more applications implemented by one or more processors; one or more machine learning models; store instructions that, when executed by one or more processors, cause the computing device to implement an on-device machine learning platform that performs operations. The operations include receiving input data from a first one of the one or more applications via the predictive application programming interface. The operations include using at least a first machine learning model of the one or more machine learning models to generate at least one inference based at least in part on the input data. The operations include providing at least one inference generated by the first machine learning model to the first application via the predictive application programming interface.

본 개시의 다른 예시적인 양태는 하나 이상의 프로세서에 의해 실행될 때 컴퓨팅 디바이스로 하여금 동작들을 수행하는 온-디바이스 기계 학습 플랫폼을 구현하게 하는 명령들을 집합적으로 저장하는 하나 이상의 비-일시적 컴퓨터 판독 가능 매체에 관한 것이다. 동작들은 예측 애플리케이션 프로그래밍 인터페이스를 통해 컴퓨팅 디바이스에 저장된 하나 이상의 애플리케이션 중 제1 애플리케이션으로부터 입력 데이터를 수신하는 단계를 포함한다. 동작들은 입력 데이터에 적어도 부분적으로 기초하여 적어도 하나의 추론을 생성하기 위해 컴퓨팅 디바이스 상에 저장된 하나 이상의 기계 학습 모델 중 적어도 제1 기계 학습 모델을 이용하는 단계를 포함한다. 동작들은 제1 기계 학습 모델에 의해 생성된 적어도 하나의 추론을 예측 애플리케이션 프로그래밍 인터페이스를 통해 제1 애플리케이션으로 제공하는 단계를 포함한다.Another illustrative aspect of the present disclosure is in one or more non-transitory computer-readable media that collectively store instructions that, when executed by one or more processors, cause a computing device to implement an on-device machine learning platform that performs operations. it's about The operations include receiving input data from a first one of the one or more applications stored on the computing device via the predictive application programming interface. The operations include using at least a first one of the one or more machine learning models stored on the computing device to generate at least one inference based at least in part on the input data. The operations include providing at least one inference generated by the first machine learning model to the first application via the predictive application programming interface.

본 개시의 다른 예시적인 양태는 컴퓨터로 구현되는 방법에 관한 것이다. 이 방법은 수집 애플리케이션 프로그래밍 인터페이스를 통해 컴퓨팅 디바이스에 의해, 컴퓨팅 디바이스에 저장된 복수의 애플리케이션 중 제1 애플리케이션으로부터 새로운 트레이닝 예제를 수신하는 단계를 포함한다. 이 방법은 컴퓨팅 디바이스에 의해, 컴퓨팅 디바이스의 중앙 집중식 예제 데이터베이스에 새로운 트레이닝 예제를 저장하는 단계를 포함한다. 이 방법은 컴퓨팅 디바이스에 의해, 중앙 집중식 예제 데이터베이스에 의해 저장된 하나 이상의 트레이닝 예제에 적어도 부분적으로 기초하여 컴퓨팅 디바이스에 의해 저장된 제1 기계 학습 모델을 재 트레이닝하기 위해 트레이닝 애플리케이션 프로그래밍 인터페이스를 통해 제1 애플리케이션으로부터 명령을 수신하는 단계를 포함한다. 이 방법은 명령에 응답하여, 컴퓨팅 디바이스에 의해, 중앙 집중식 예제 데이터베이스에 의해 저장된 하나 이상의 트레이닝 예제에 적어도 부분적으로 기초하여 제1 기계 학습 모델이 재 트레이닝되게 하는 단계를 포함한다. 이 방법은 컴퓨팅 디바이스에 의해, 예측 애플리케이션 프로그래밍 인터페이스를 통해 제1 애플리케이션으로부터 입력 데이터를 수신하는 단계를 포함한다. 이 방법은 입력 데이터에 적어도 부분적으로 기초하여 적어도 하나의 추론을 생성하기 위해 제1 기계 학습 모델을 이용하는 단계를 포함한다. 이 방법은 제1 기계 학습 모델에 의해 생성된 적어도 하나의 추론을 예측 애플리케이션 프로그래밍 인터페이스를 통해 제1 애플리케이션으로 제공하는 단계를 포함한다.Another exemplary aspect of the present disclosure relates to a computer-implemented method. The method includes receiving, by the computing device via an aggregation application programming interface, a new training example from a first one of a plurality of applications stored on the computing device. The method includes storing, by the computing device, new training examples in a centralized example database of the computing device. The method comprises from a first application via a training application programming interface to retrain, by the computing device, a first machine learning model stored by the computing device based at least in part on one or more training examples stored by the centralized example database. receiving an instruction. The method includes, in response to the instruction, causing, by the computing device, the first machine learning model to be retrained based at least in part on one or more training examples stored by the centralized example database. The method includes receiving, by a computing device, input data from a first application via a predictive application programming interface. The method includes using the first machine learning model to generate at least one inference based at least in part on input data. The method includes providing at least one inference generated by the first machine learning model to a first application via a predictive application programming interface.

본 개시의 다른 양상태은 다양한 시스템, 장치, 비-일시적 컴퓨터 판독 가능 매체, 사용자 인터페이스 및 전자 디바이스에 관한 것이다.Other aspects of the disclosure relate to various systems, apparatus, non-transitory computer-readable media, user interfaces, and electronic devices.

본 개시의 다양한 실시예들의 이들 및 다른 특징, 양태 및 이점은 다음의 설명 및 첨부된 청구 범위를 참조하여 보다 잘 이해될 것이다. 본 명세서에 포함되어 본 명세서의 일부를 구성하는 첨부 도면은 본 개시의 예시적인 실시예를 예시하고, 상세한 설명과 함께 관련 원리를 설명하는 역할을 한다.These and other features, aspects and advantages of various embodiments of the present disclosure will be better understood with reference to the following description and appended claims. BRIEF DESCRIPTION OF THE DRAWINGS The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate exemplary embodiments of the present disclosure, and together with the description serve to explain related principles.

본 기술 분야의 통상의 기술자를 대상으로 하는 실시예들의 상세한 설명은 본 명세서에 제시되며, 첨부 도면을 참조한다.
도 1은 본 개시의 예시적인 실시예에 따른 온-디바이스 기계 학습 플랫폼을 포함하는 예시적인 컴퓨팅 시스템의 블록도를 도시한다.
도 2는 본 개시의 예시적인 실시예에 따른 예시적인 기계 학습 모델 배치의 그래픽 도면를 도시한다.
도 3은 본 개시의 예시적인 실시예에 따른 예시적인 개인화 및 연합 학습 데이터 흐름의 그래픽 다이어그램을 도시한다.
도 4는 본 개시의 예시적인 실시예에 따른 예시적인 온-디바이스 기계 학습 플랫폼의 블록도를 도시한다.
도 5a 및 5b는 본 개시의 예시적인 실시예에 따라 컨텍스트 특징을 삽입하는 예시적인 기계 학습 플랫폼의 블록도를 도시한다.
도 6a 및 6b는 본 개시의 예시적인 실시예에 따른 모델 트레이닝을 수행하는 예시적인 디바이스의 블록도를 도시한다.
도 7은 본 개시의 예시적인 실시예에 따른 예시적인 연합 학습 프로세스의 그래픽 다이어그램을 도시한다.
도 8은 본 개시의 예시적인 실시예에 따른 기계 학습 모델을 사용하여 추론을 생성하는 예시적인 방법의 흐름도를 도시한다.
도 9는 본 개시의 예시적인 실시예에 따라 기계 학습을 수행하기 위한 트레이닝 예제를 수집하는 예시적인 방법의 흐름도를 도시한다.
도 10은 본 개시의 예시적인 실시예에 따라 기계 학습 모델을 트레이닝시키는 예시적인 방법의 흐름도를 도시한다.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS A detailed description of embodiments, which is intended for those skilled in the art, is presented herein, and reference is made to the accompanying drawings.
1 depicts a block diagram of an exemplary computing system including an on-device machine learning platform in accordance with an exemplary embodiment of the present disclosure.
2 depicts a graphical diagram of an exemplary machine learning model deployment in accordance with an exemplary embodiment of the present disclosure.
3 shows a graphical diagram of an exemplary personalized and federated learning data flow in accordance with an exemplary embodiment of the present disclosure.
4 depicts a block diagram of an exemplary on-device machine learning platform in accordance with an exemplary embodiment of the present disclosure.
5A and 5B show block diagrams of an example machine learning platform for embedding context features in accordance with example embodiments of the present disclosure.
6A and 6B show block diagrams of an exemplary device for performing model training in accordance with an exemplary embodiment of the present disclosure.
7 shows a graphical diagram of an exemplary federated learning process in accordance with an exemplary embodiment of the present disclosure.
8 depicts a flow diagram of an exemplary method for generating inferences using a machine learning model in accordance with an exemplary embodiment of the present disclosure.
9 depicts a flow diagram of an exemplary method of collecting training examples for performing machine learning in accordance with an exemplary embodiment of the present disclosure.
10 depicts a flow diagram of an exemplary method of training a machine learning model in accordance with an exemplary embodiment of the present disclosure.

일반적으로, 본 개시는 온-디바이스 기계 학습을 위한 시스템 및 방법에 관한 것이다. 특히, 본 개시는 온-디바이스 기계 학습 플랫폼 및 온-디바이스 예측, 트레이닝, 예제 수집 및/또는 다른 기계 학습 태스크 또는 기능을 가능하게 하는 관련 기술에 관한 것이며, 이는 통칭하여 "기계 학습 기능"으로 지칭될 수 있다.Generally, this disclosure relates to systems and methods for on-device machine learning. In particular, this disclosure relates to on-device machine learning platforms and related technologies that enable on-device prediction, training, example collection, and/or other machine learning tasks or functions, collectively referred to as “machine learning capabilities”. can be

온-디바이스 기계 학습 플랫폼은 컴퓨팅 디바이스 또는 터미널(예를 들어, 스마트 폰 또는 태블릿)에 로컬로 저장된 하나 이상의 컴퓨터 프로그램의 형태일 수 있는데, 이는 사용자 디바이스 또는 터미널에 의해 실행될 때, 하나 이상의 로컬로 저장된 애플리케이션, 루틴 또는 다른 로컬 클라이언트를 대신하여 온-디바이스 기계 학습 기능의 실행을 가능하게 하는 기계 학습 관리 동작을 수행하도록 구성된다. 온-디바이스 기계 학습 기능 중 적어도 일부는 컴퓨팅 디바이스 또는 단말기 상에 로컬로 구현된 하나 이상의 기계 학습 엔진을 사용하여 수행될 수 있다. 하나 이상의 로컬로 저장된 애플리케이션 또는 루틴("클라이언트"라고 지칭될 수 있음)을 대신하여 온-디바이스 기계 학습 기능의 수행은 하나 이상의 애플리케이션 프로그래밍 인터페이스(API)를 통해 온-디바이스 기계 학습 플랫폼과 상호 작용할 수 있는 중앙 집중식 서비스로서 해당 클라이언트에 제공될 수 있다. The on-device machine learning platform may be in the form of one or more computer programs stored locally on a computing device or terminal (eg, a smart phone or tablet), which, when executed by a user device or terminal, may be in the form of one or more locally stored and perform machine learning management operations that enable execution of on-device machine learning functions on behalf of applications, routines, or other local clients. At least some of the on-device machine learning functions may be performed using one or more machine learning engines implemented locally on the computing device or terminal. The performance of on-device machine learning functions on behalf of one or more locally stored applications or routines (which may be referred to as “clients”) may interact with the on-device machine learning platform through one or more application programming interfaces (APIs). It can be provided to the corresponding client as a centralized service.

또한, 일부 구현에서, 온-디바이스 기계 학습 플랫폼은 예측/추론을 생성하기 위해 사용된 수집된 트레이닝 예제 및/또는 클라이언트 제공 입력 데이터에 컨텍스트 특징을 안전하게 삽입하는 컨텍스트 제공자를 포함할 수 있다. 따라서, 온-디바이스 기계 학습 플랫폼은 중앙 집중식 트레이닝 예제 수집, 모델 트레이닝 및 기계 학습 모델의 사용을 어플리케이션 또는 다른 클라이언트에 대한 서비스로 사용할 수 있다.Additionally, in some implementations, the on-device machine learning platform may include a context provider that securely embeds contextual features into client-supplied input data and/or collected training examples used to generate predictions/inferences. Thus, an on-device machine learning platform can use centralized training example collection, model training, and use of machine learning models as a service to applications or other clients.

보다 구체적으로, 예를 들어, 모바일 컴퓨팅 디바이스(예를 들어, 스마트 폰)와 같은 컴퓨팅 디바이스는 하나 이상의 애플리케이션(예를 들어, 모바일 애플리케이션)을 저장하거나 포함할 수 있다. 컴퓨팅 디바이스는 또한 온-디바이스 기계 학습 플랫폼 및 하나 이상의 기계 학습 모델을 포함하고 구현할 수 있다. 예를 들어, 기계 학습 모델은 플랫폼에 의해 관리되는 중앙 집중식(centralized) 모델 계층에 디바이스에 의해 저장될 수 있다.More specifically, a computing device, such as, for example, a mobile computing device (eg, a smart phone) may store or include one or more applications (eg, a mobile application). The computing device may also include and implement an on-device machine learning platform and one or more machine learning models. For example, the machine learning model may be stored by the device in a centralized model layer managed by the platform.

본 개시의 일 양태에 따르면, 애플리케이션은 API("예측 API"로 지칭될 수 있음)를 통해 온-디바이스 기계 학습 플랫폼과 통신하여 입력 데이터를 제공하고 하나 이상의 기계 학습 모델로부터의 입력 데이터에 기초하여 예측을 획득할 수 있다. 예로서, 일부 구현에서, 예측 계획(예를 들어, 추론/예측을 획득하기 위해 모델을 실행하는 명령들) 및 모델 파라미터들에 대한 URI(Uniform Resource Identifier)가 주어지면, 온-디바이스 기계 학습 플랫폼은 (예를 들어, 기계 학습 엔진과 상호 작용하여 엔진에 의해 모델을 구현함으로써) URI 컨텐츠(예를 들어, 예측 계획 및 파라미터)를 다운로드하고 하나 이상의 추론/예측을 획득할 수 있다. 또한, 플랫폼은 후속 예측 요청에 사용할 수 있도록 컨텐츠를 캐시(cache)할 수 있다.According to one aspect of the present disclosure, an application communicates with an on-device machine learning platform via an API (which may be referred to as a "prediction API") to provide input data and based on the input data from one or more machine learning models. predictions can be obtained. As an example, in some implementations, given a prediction plan (eg, instructions to run a model to obtain inference/prediction) and a Uniform Resource Identifier (URI) for model parameters, an on-device machine learning platform may download the URI content (eg, prediction plans and parameters) and obtain one or more inferences/predictions (eg, by interacting with a machine learning engine to implement the model by the engine). Additionally, the platform may cache content for use in subsequent prediction requests.

따라서, 온-디바이스 기계 학습 모델은 클라이언트/서비스 관계를 통해 온-디바이스 기계 학습 플랫폼과 통신함으로써 애플리케이션에 의해 액세스될 수 있다. 특히, 일부 구현에서, 기계 학습 플랫폼은 애플리케이션에 의해 참조될 수 있는 독립형 다중 테넌트 서비스(multi-tenant service)일 수 있다. 따라서, 주어진 애플리케이션은 기계 학습 모델(들)을 저장, 관리, 트레이닝 및/또는 구현할 필요가 없지만 대신 온-디바이스 기계 학습 플랫폼과 통신하여 모델(들)로부터 추론을 요청 및 수신할 수 있다.Thus, on-device machine learning models can be accessed by applications by communicating with the on-device machine learning platform through a client/service relationship. In particular, in some implementations, the machine learning platform may be a standalone multi-tenant service that may be referenced by an application. Thus, a given application does not need to store, manage, train and/or implement the machine learning model(s), but may instead communicate with the on-device machine learning platform to request and receive inferences from the model(s).

본 개시의 다른 양태에 따르면, 컴퓨팅 디바이스는 하나 이상의 애플리케이션으로부터 수신된 트레이닝 예제를 저장하는 중앙 집중식 예제 데이터베이스를 더 포함할 수 있다. 특히, 온-디바이스 기계 학습 플랫폼은 API("수집 API"로 지칭될 수 있음)를 통해 애플리케이션으로부터 트레이닝 예제를 수신할 수 있고 중앙 집중식 예제 데이터베이스에서 예제의 저장을 관리할 수 있다. 예를 들어, 플랫폼의 클라이언트 또는 테넌트인 각 애플리케이션은 중앙 집중식 예제 데이터베이스 내에 저장된 자체 예제 컬렉션(들)을 가질 수 있으며 그 컬렉션(들)은 온라인 방식으로 보완 및/또는 관리될 수 있다.According to another aspect of the present disclosure, the computing device may further include a centralized example database that stores training examples received from one or more applications. In particular, the on-device machine learning platform may receive training examples from applications via an API (which may be referred to as an "ingestion API") and manage storage of examples in a centralized example database. For example, each application that is a client or tenant of the platform may have its own example collection(s) stored within a centralized example database, which collection(s) may be supplemented and/or managed in an online manner.

일부 구현에서, 온-디바이스 기계 학습 플랫폼은 트레이닝 예제를 제공하는 애플리케이션과 관련된 하나 이상의 옵션 파라미터에 따라 (예를 들어, 그의 대응하는 컬렉션 내의) 애플리케이션으로부터 수신된 각각의 트레이닝 예제의 저장을 야기할 수 있다. 일 예로서, 옵션 파라미터들는 트레이닝 예제가 저장되는(예를 들어, 그 후 삭제되는) 시간 기간을 정의하는 유효 기간(time-to-live:TTL) 파라미터를 포함할 수 있다. 일부 구현에서, 옵션 파라미터들은 수집 API를 통해 플랫폼에 제공되는 명령들을 통해 사전 정의 및/또는 조정될 수 있다.In some implementations, the on-device machine learning platform may cause storage of each training example received from the application (eg, within its corresponding collection) according to one or more optional parameters associated with the application providing the training example. have. As an example, the optional parameters may include a time-to-live (TTL) parameter that defines a period of time during which the training example is stored (eg, deleted thereafter). In some implementations, optional parameters may be predefined and/or adjusted via commands provided to the platform via the aggregation API.

본 개시의 다른 양태에 따르면, 일부 구현에서, 온-디바이스 기계 학습 플랫폼은 컴퓨팅 디바이스와 관련된 컨텍스트를 설명하는 컨텍스트 특징을 트레이닝 예제에 안전하게 삽입할 수 있다. 예를 들어, 애플리케이션으로부터 트레이닝 예제를 수신하면, 온-디바이스 플랫폼의 컨텍스트 제공자 컴포넌트는 하나 이상의 컨텍스트 특징을 결정하여 이러한 컨텍스트 특징을 트레이닝 예제와 함께 중앙 집중식 예제 데이터베이스에 저장할 수 있다. 예를 들어, 새로운 트레이닝 예제에서 제공된 컨텍스트 특징과 데이터는 단일 데이터베이스 항목으로서 저장될 수 있다. 특정 애플리케이션으로부터 수신된 트레이닝 예제로 결정된 다음 삽입하거나 달리 관련되고 및/또는 저장된 특정 컨텍스트 특징들은 이러한 특정 애플리케이션에 대한 옵션 파라미터들에 의해 특정될 수 있다. 위에서 설명한 것처럼, 이러한 옵션 특징은 수집 API를 통해 조정하거나 미리 정의될 수 있다. 따라서, 애플리케이션은 (예를 들어, 옵션 파라미터를 정의함으로써) 어떤 컨텍스트 특징 또는 컨텍스트 유형이 그의 트레이닝 예제에 삽입되는지 제어할 수 있다 .According to another aspect of the present disclosure, in some implementations, the on-device machine learning platform can safely insert contextual features that describe the context associated with the computing device into the training example. For example, upon receiving training examples from an application, the context provider component of the on-device platform may determine one or more context characteristics and store these context characteristics along with the training examples in a centralized example database. For example, context features and data provided in a new training example may be stored as a single database item. Specific contextual characteristics determined and then inserted or otherwise associated and/or stored with a training example received from a particular application may be specified by optional parameters for that particular application. As described above, these optional features can be pre-defined or tuned via the ingest API. Thus, an application can control (eg, by defining optional parameters) which context characteristics or context types are inserted into its training examples.

일부 구현에서, 컨텍스트 특징들은 그 컨텍스트 특징이 애플리케이션에 직접 이용 가능할 필요가 없도록 서비스 측에 삽입된다. 특히, 일부 구현에서, 중앙 집중식 예제 데이터베이스는 하나 이상의 애플리케이션에 의해 직접 액세스 가능하지 않으므로, 특정 트레이닝 예제와 함께 저장된 컨텍스트 정보는 그 트레이닝 예제를 제공한 애플리케이션조차도 액세스할 수 없다.In some implementations, context features are inserted on the service side so that the context features do not have to be available directly to the application. In particular, in some implementations, the centralized database of examples is not directly accessible by one or more applications, so that contextual information stored with a particular training example cannot be accessed even by the application that provided the training example.

일부 구현에서, 컨텍스트 특징들은 다수의 상이한 컨텍스트 유형에 따라 그룹화되거나 달리 분류될 수 있다. 일반적으로, 각 컨텍스트 유형은 잘 알려진 이름과 잘 알려진 유형의 컨텍스트 특징 세트를 지정하거나 포함할 수 있다. 컨텍스트 유형의 한 예는 오디오 상태, 네트워크 상태, 전원 연결 등의 예시적인 컨텍스트 특징를 포함하는 디바이스 정보이다.In some implementations, context characteristics may be grouped or otherwise classified according to a number of different context types. In general, each context type may specify or contain a well-known name and a set of context characteristics of the well-known type. One example of a context type is device information including exemplary context characteristics such as audio status, network status, power connection, and the like.

일부 구현에서, 컨텍스트 제공자는 삽입 시간/시점에서 디바이스(예를 들어, 디바이스의 컨텍스트 관리자)로부터 주어진 컨텍스트 특징에 대해 삽입된 값을 요청한다. 대안적으로 또는 추가적으로, 컨텍스트 제공자는 하나 이상의 컨텍스트 업데이트에 대한 리스너(listener)로서 등록할 수 있고, 하나 이상의 컨텍스트 업데이트에 기초하여 컨텍스트 특징에 대한 현재 값의 컨텍스트 특징 캐시를 유지할 수 있다. 그런 다음 컨텍스트 특징이 삽입되면, 컨텍스트 제공자는 컨텍스트 특징 캐시에 액세스하여, 특정 컨텍스트 특징에 대해 캐시에 유지된 현재 값을 삽입한다.In some implementations, the context provider requests the inserted value for a given context characteristic from the device (eg, the device's context manager) at insertion time/point. Alternatively or additionally, a context provider may register as a listener for one or more context updates, and may maintain a context feature cache of current values for context features based on one or more context updates. Then, when the context feature is inserted, the context provider accesses the context feature cache and inserts the current value held in the cache for that particular context feature.

저장 시간에서 트레이닝 예제에 컨텍스트 특징을 삽입하는 것에 추가하여 또는 대안적으로, 컨텍스트 제공자는 또한 추론 시간에서 컨텍스트 특징의 삽입을 수행할 수 있다. 특히, 특정 애플리케이션 또는 다른 클라이언트가 (예를 들어, 예측 API를 통해) 일부 클라이언트 제공 입력 데이터에 기초하여 추론이 생성되도록 요청하는 경우, 트레이닝 예제 수집을 위한 전술한 프로세스와 유사하게, 컨텍스트 제공자는 입력 데이터와 함께 해당 기계 학습 모델에 입력하기 위한 보충 컨텍스트 특징을 삽입하거나 제공할 수 있다. 따라서, 클라이언트 제공 입력 데이터에 더하여 컨텍스트 정보에 적어도 부분적으로 기초하여 추론이 이루어질 수 있으며, 이는 추론의 정확성을 향상시키는데 도움이 될 수 있다.In addition to or alternatively to inserting the context feature into the training example at storage time, the context provider may also perform the inserting of the context feature at inference time. Similar to the process described above for gathering training examples, in particular, when a particular application or other client requests that an inference be generated based on some client-supplied input data (e.g., via a prediction API), the context provider can You can insert or provide supplemental contextual features for input into the corresponding machine learning model along with the data. Accordingly, inferences may be made based at least in part on context information in addition to client-provided input data, which may help to improve the accuracy of the inferences.

위의 설명에 더하여, 사용자는 본 명세서에 기술된 시스템, 프로그램 또는 특징이 사용자 정보(예를 들어, 트레이닝 예제 및 컨텍스트 특징)의 수집을 가능하게 할 수 있는 경우 및 시기, 그리고 사용자가 서버로부터 컨텐츠 또는 통신이 전송되는 경우에 대해 사용자가 선택을 할 수 있게 하는 컨트롤을 제공받을 수 있다. 또한, 특정 데이터는 개인 식별 정보가 제거되도록 저장 또는 사용하기 전에 하나 이상의 방식으로 처리될 수 있다. 예를 들어, 사용자의 신원은 사용자에 대한 개인 식별 정보가 결정되지 않도록 처리될 수 있거나, 사용자의 지리적 위치는 사용자의 특정 위치가 결정될 수 없도록 위치 정보가 획득된 곳(도시, 우편 번호 또는 주 수준과 같은)으로 일반화될 수 있다. 따라서, 사용자는 사용자에 대해 어떤 정보가 수집되는지, 그 정보가 어떻게 사용되는지 및 어떤 정보가 사용자에게 제공되는지를 제어할 수 있다.In addition to the above description, the user can determine when and when a system, program, or feature described herein may enable the collection of user information (eg, training examples and contextual features), and when and when the user can obtain content from the server. Alternatively, a control may be provided that allows the user to make a choice as to when the communication is sent. In addition, certain data may be processed in one or more ways prior to storage or use so that personally identifiable information is removed. For example, the user's identity may be processed such that personally identifiable information about the user cannot be determined, or the user's geographic location may be determined from where the location information was obtained such that a specific location of the user cannot be determined (city, zip code or state level). ) can be generalized. Thus, the user can control what information is collected about the user, how that information is used, and what information is provided to the user.

다른 양태에 따르면, 특정 애플리케이션 또는 다른 클라이언트는 (예를 들어, 디바이스 사용자에 의해 정의되거나 제어되는 바와 같이) 특정 컨텍스트 특징 또는 컨텍스트 유형에만 액세스할 수 있는 권한을 가질 수 있기 때문에, 컨텍스트 제공자는 클라이언트 권한 제어를 수행할 수 있다. 특히, 일부 구현에서, 온-디바이스 기계 학습 플랫폼 또는 다른 디바이스 컴포넌트는 어느 클라이언트가 어떤 컨텍스트 유형에 액세스할 수 있는 권한을 갖는지에 대한 매핑을 유지할 수 있다. 컨텍스트 특징을 삽입되어야 하는 경우(예를 들어, 저장을 위한 트레이닝 예제로 또는 추론 시간에 클라이언트가 제공한 입력 데이터를 보완하기 위해), 컨텍스트 제공자는 삽입될 컨텍스트 특징 또는 컨텍스트 유형에 대한 대응하는 애플리케이션 또는 다른 클라이언트의 권한 상태를 체크할 수 있다. 예를 들어, 특정 애플리케이션 및 컨텍스트 유형에 대한 권한 상태는 이러한 애플리케이션이 그러한 컨텍스트 유형에 액세스할 권한을 갖는지 여부를 기술할 수 있다. 컨텍스트 제공자는 애플리케이션이 액세스할 권한을 갖는 컨텍스트 유형에 포함된 컨텍스트 기능만 삽입함으로ㅆ, 애플리케이션이 액세스할 권한을 갖지 않는 컨텍스트 특징/타입에 (간접적인 방법으로도) 액세스하는 것을 방지할 것이다.According to another aspect, the context provider may have the right to access only certain context features or context types (eg, as defined or controlled by the device user), so that a particular application or other client may have the client privileges. control can be performed. In particular, in some implementations, an on-device machine learning platform or other device component may maintain a mapping of which clients have permission to access which context types. When a context feature is to be inserted (e.g., as a training example for storage or to supplement input data provided by the client at inference time), the context provider can provide a corresponding application or You can check the permission status of other clients. For example, the permission status for a particular application and context type may describe whether that application has permission to access that context type. The context provider will prevent (even indirectly) from accessing (even indirectly) context features/types that the application does not have access to, by inserting only the context functions contained in the context type that the application has permission to access.

전술한 유효 기간 옵션 파라미터와 유사하게, 일부 구현에서, 각각의 컨텍스트 특징은 이와 관련되거나 이에 할당된 만료 기간을 가질 수 있다. 이 만료 기간 정보는 컨텍스트 특징(들)이 포함된 각 트레이닝 예제와 관련될 수 있다. 일부 구현에서, 특정 트레이닝 예제에서 제공되는 특정 컨텍스트 특징에 대한 만료 기간의 종료시에, 그러한 컨텍스트 특징에 대한 값이 그러한 트레이닝 예제에서 삭제되거나 제거될 수 있다. 대안적으로, 전체 트레이닝 예제가 삭제되거나 제거될 수 있다.Similar to the validity period option parameter described above, in some implementations, each context feature may have an expiration period associated with or assigned to it. This expiry period information may be associated with each training example with context feature(s) included. In some implementations, at the end of an expiration period for a particular context feature provided in a particular training example, the value for that context feature may be deleted or removed from that training example. Alternatively, the entire training example may be deleted or removed.

또한, 일부 구현에서, 특정 컨텍스트 특징 또는 컨텍스트 유형에 대한 특정 애플리케이션 또는 다른 클라이언트에 대한 권한 상태에 대한 변경에 응답하여, 온-디바이스 플랫폼은 중앙 집중식 예제 데이터베이스로부터 특정 애플리케이션과 관련된 트레이닝 예제와 관련된 이러한 컨텍스트 특징(들) 또는 유형(들)에 대한 임의의 값 또는 항목을 삭제할 수 있다. 또한, 일부 구현에서, 대응하는 모델(들)은 컨텍스트 특징 값(들)의 삭제후 나머지 데이터에 대해 재 트레이닝될 수 있다.Further, in some implementations, in response to a change to a privilege state for a particular application or other client for a particular context characteristic or context type, the on-device platform retrieves these contexts associated with training examples related to the particular application from a centralized example database. Any value or item for a feature(s) or type(s) may be deleted. Also, in some implementations, the corresponding model(s) may be retrained on the remaining data after deletion of the context feature value(s).

본 개시의 또 다른 양태에 따르면, 애플리케이션은 API("트레이닝 API"라고도 함)를 통해 온-디바이스 기계 학습 플랫폼과 통신하여 중앙 집중식 예제데이터 베이스에 저장된 트레이닝 예제에 기초하여 기계 학습 모델의 재 트레이닝 또는 업데이트를 야기할 수 있다. 예로서, 일부 구현에서, 트레이닝 계획에 대한 URI(예를 들어, 모델 트레이닝을 위한 명령)가 주어지면, 온-디바이스 기계 학습 플랫폼은 이전에 수집된 예제에 기초하여 (예를 들어, 엔진에 의해 모델의 트레이닝을 유발하도록 기계 학습 엔진과 상호 작용함으로써) 모델에 대한 트레이닝을 실행할 수 있다. 예를 들어, 트레이닝은 스케줄링된 시간 및/또는 디바이스가 유휴 상태일 때 백그라운드로 수행될 수 있다.According to another aspect of the present disclosure, an application communicates with an on-device machine learning platform via an API (also referred to as a "training API") to retrain or retrain a machine learning model based on training examples stored in a centralized database of examples. It may cause an update. As an example, in some implementations, given a URI to a training plan (eg, an instruction for training a model), the on-device machine learning platform is configured based on previously collected examples (eg, by the engine You can run training on a model (by interacting with a machine learning engine to trigger training of the model). For example, training may be performed in the background at scheduled times and/or when the device is idle.

모델의 재 트레이닝 후, 그 재 트레이닝된 모델은 본 개시의 다른 곳에 기술된 바와 같이 추론을 제공하는데 사용될 수 있다. 일반적으로 이러한 추론은 모델이 사용자에게 특정된 데이터에 대해 재 트레이닝되었기 때문에 더 높은 정확도를 갖을 것이다. 따라서, 온-디바이스 기계 학습 플랫폼은 애플리케이션 또는 다른 클라이언트에 대한 서비스로서 기계 학습 모델의 중앙 집중식 예시 데이터 수집 및 대응하는 개인화를 가능하게 할 수 있다.After retraining the model, the retrained model can be used to provide inferences as described elsewhere in this disclosure. In general, such inferences will have higher accuracy because the model has been retrained on user-specific data. Thus, an on-device machine learning platform may enable centralized example data collection and corresponding personalization of machine learning models as a service to applications or other clients.

다른 양태에 따르면, 일부 구현에서, 기계 학습 플랫폼은 기계 학습 메트릭의 상세한 분석을 위해 기계 학습 모델에 관한 로그 또는 다른 업데이트를 클라우드에 업로드할 수 있다. 예로서, 일부 구현에서, 온-디바이스 플랫폼은 재 트레이닝된 기계 학습 모델의 파라미터 또는 모델의 재 트레이닝 동안 발생된 기계 학습 모델의 파라미터에 대한 변경을 기술하는 업데이트를 결정할 수 있다. 플랫폼은 다른 컴퓨팅 디바이스에 의해 제공된 다른 업데이트와의 통합을 위해 업데이트를 중앙 서버 컴퓨팅 디바이스(예를 들어, "클라우드")로 전송할 수 있다. 따라서, 플랫폼은 "연합 학습"으로 알려진 프로세스에 참여할 수 있으며, 여기서 디바이스는 로컬로 저장된 데이터에 기초하여 모델에 대한 로컬 업데이트를 결정한 다음, 그 로컬 업데이트를 집계를 위해 (예를 들어, 프라이버시 보호 및 통신 효율적인 방식으로) 클라우드 서비스로 전달하여 그 모델에 대한 글로벌 업데이트를 생성한다.According to another aspect, in some implementations, the machine learning platform may upload logs or other updates regarding the machine learning model to the cloud for detailed analysis of machine learning metrics. As an example, in some implementations, the on-device platform may determine an update describing a parameter of a retrained machine learning model or changes to a parameter of the machine learning model that occurred during retraining of the model. The platform may send updates to a central server computing device (eg, the “cloud”) for integration with other updates provided by other computing devices. Thus, the platform may engage in a process known as “federated learning,” in which the device determines local updates to the model based on locally stored data and then aggregates those local updates for aggregation (e.g., privacy protection and in a communication-efficient way) to create a global update to that model.

다른 양태에 따르면, 일부 구현에서, 서로로부터 애플리케이션을 보호하기 위해, 각 애플리케이션은 온-디바이스 플랫폼에 의해 제공되는 특정 기능들(예를 들어, 모든 기능에 대해)에 대한 자체 엔클레이브(enclave)를 가질 수 있다. 예를 들어, 플랫폼에 액세스하기 위한 인터페이스가 팩토리(factory)를 통해 애플리케이션으로 리턴되기 전에 플랫폼이 애플리케이션을 인증할 수 있다. 그런 다음 리턴된 인터페이스는 플랫폼에서 애플리케이션 엔클레이브의 유일한 뷰를 나타낼 수 있다. 이 프로세스의 일 예의 구현에서, 애플리케이션이 플랫폼의 API에 연결될 때, 그 애플리케이션은 애플리케이션의 신원을 검증하는 서명된 패키지 토큰을 제공할 수 있다. 애플리케이션은 이 인증을 통과하지 않고는 API 인터페이스를 얻을 수 없다.According to another aspect, in some implementations, to protect applications from each other, each application has its own enclave for specific functions (eg, for all functions) provided by the on-device platform. can have For example, the platform may authenticate the application before the interface for accessing the platform is returned to the application through a factory. The returned interface can then represent the only view of the application enclave on the platform. In an example implementation of this process, when an application connects to the platform's API, the application may provide a signed package token that verifies the identity of the application. An application cannot obtain an API interface without passing this authentication.

본 개시의 다른 양태에 따르면, 일부 구현에서, 온-디바이스 기계 학습 플랫폼은 기본적인 기계 학습 엔진으로부터 완전히 추상화될 수 있다. 예를 들어, 기계 학습 엔진은 텐서 플로우 엔진, 신경망 라이브러리, 또는 추론 및/또는 트레이닝을 위해 기계 학습 모델을 구현할 수 있는 다른 엔진일 수 있다. 이러한 추상화로 인해, 기계 학습 플랫폼은 모델 아티팩트를 클라우드에서 생성된 다음 디바이스로 전달되는(shipped) 블랍(blobs)으로 취급할 수 있으며, 여기서 이후 매칭 엔진에 의해 해석된다. 이러한 방식으로, 기계 학습 플랫폼과 그의 지원되는 애플리케이션은 기계 학습 엔진의 변경에 대해 탄력적일 수 있고 및/또는 사용된 특정 엔진 또는 엔진 유형에 대해 독립적(agnostic)이거나 유연할 수 있다.According to another aspect of the present disclosure, in some implementations, the on-device machine learning platform may be completely abstracted from the underlying machine learning engine. For example, the machine learning engine may be a tensorflow engine, a neural network library, or other engine capable of implementing machine learning models for inference and/or training. This abstraction allows machine learning platforms to treat model artifacts as blobs created in the cloud and then shipped to devices, where they are then interpreted by the matching engine. In this way, the machine learning platform and its supported applications may be resilient to changes in the machine learning engine and/or may be agnostic or flexible to the particular engine or engine type used.

다른 양태에 따르면, 온-디바이스 플랫폼에 상보적인 툴킷(toolkit)은 디바이스에 아티팩트로서 전달되기 전에 클라우드에서 모델을 생성하고 시뮬레이션하기 위한 툴 세트(예를 들어, Python 툴)를 제공할 수 있다. 일부 구현에서, 툴킷은 다른 버전의 기계 학습 엔진 또는 심지어 다른 엔진 유형(예를 들어, 모바일 중심 TensorFlow Lite 대 신경망 라이브러리 등)에 대해 동일한 소스 아티팩트(예를 들어, Python 소스 아티팩트)로부터 생성할 수 있다. According to another aspect, a toolkit complementary to the on-device platform may provide a set of tools (eg, Python tools) for creating and simulating models in the cloud before they are delivered as artifacts to the device. In some implementations, the toolkit can generate from the same source artifacts (e.g., Python source artifacts) for different versions of machine learning engines or even different engine types (e.g., mobile-centric TensorFlow Lite vs. neural network libraries, etc.). .

일부 구현에서, 온-디바이스 기계 학습 플랫폼은 예를 들어 모바일 애플리케이션과 같은 애플리케이션에 포함되거나 애플리케이션으로서 구현될 수 있다. 예를 들어, 안드로이드 운영 체제의 맥락에서, 온-디바이스 기계 학습 플랫폼은 다운로드 및/또는 업데이트될 수 있는 안드로이드 패키지 키트(APK)에 포함될 수 있다. 하나의 특정 예에서, 온-디바이스 기계 학습 플랫폼은 다른 애플리케이션 또는 디바이스 자체에 다수의 상이한 지원 서비스를 제공하는 더 큰 애플리케이션의 일부로서 포함되거나 구현될 수 있다. 예를 들어, 온-디바이스 기계 학습 플랫폼 외에, 더 큰 애플리케이션은 컴퓨팅 디바이스가 디지털 분배 서비스(예를 들어, "앱 스토어"로부터 애플리케이션 및/또는 업데이트 다운로드) 및/또는 다른 서비스와 상호 작용할 수 있게 하는 서비스를 제공할 수 있다. 다른 예에서, 온-디바이스 기계 학습 플랫폼은 독립형 애플리케이션이 아니라 디바이스의 운영 체제의 일부로서 포함되거나 구현될 수 있다.In some implementations, the on-device machine learning platform may be implemented as an application or embedded in an application, such as a mobile application, for example. For example, in the context of the Android operating system, an on-device machine learning platform may be included in an Android Package Kit (APK) that may be downloaded and/or updated. In one particular example, the on-device machine learning platform may be included or implemented as part of a larger application that provides a number of different support services to other applications or to the device itself. For example, in addition to on-device machine learning platforms, larger applications enable computing devices to interact with digital distribution services (eg, downloading applications and/or updates from an “app store”) and/or other services. service can be provided. In another example, the on-device machine learning platform may be included or implemented as part of the device's operating system rather than as a standalone application.

본 개시의 시스템 및 방법은 다수의 기술적 효과 및 이점을 제공한다. 하나의 기술적 효과 및 이점으로서, 온-디바이스 기계 학습 플랫폼은 로컬로 저장된 디바이스-특정 트레이닝 예제에 기초하여 기계 학습 모델의 개인화를 가능하게 하여, 더 높은 정확도 추론으로 이끈다. 유사하게, 본 명세서의 다른 곳에 기술된 바와 같이, 온-디바이스 플랫폼은 로컬 업데이트가 집계되어 글로벌 업데이트를 생성하는 "연합 학습"에 디바이스의 참여를 가능하게 하여, 모든 개인에 대한 글로벌 모델 정확도를 향상시킨다. The system and method of the present disclosure provide a number of technical effects and advantages. As one technical effect and advantage, the on-device machine learning platform enables the personalization of machine learning models based on locally stored device-specific training examples, leading to higher accuracy inference. Similarly, as described elsewhere herein, the on-device platform enables the device's participation in "federated learning" where local updates are aggregated to generate global updates, improving global model accuracy for all individuals. make it

다른 예시적인 기술적 효과 및 이점으로서, 온-디바이스 기계 학습 플랫폼은 컨텍스트 신호를 트레이닝 예제 및/또는 추론 입력에 안전하게 포함시킬 수 있다. 즉, 프라이버시를 유지하고 사용자-정의 권한을 컴파일하는 방식으로 컨텍스트 특징이 트레이닝 예제 또는 추론 입력에 추가될 수 있다. 컨텍스트 정보를 포함함으로써 기계 학습 모델에 의해 제공되는 추론의 정확성이 향상될 수 있다.As another exemplary technical effect and advantage, the on-device machine learning platform may safely include context signals in training examples and/or inference inputs. That is, contextual features can be added to training examples or inference inputs in a way that preserves privacy and compiles user-defined permissions. The inclusion of contextual information may improve the accuracy of the inference provided by the machine learning model.

기술적 효과 및 이점의 다른 예로서, 온-디바이스 기계 학습 플랫폼은 애플리케이션이 기계 학습 모델을 관리(예를 들어, 트레이닝 및/또는 실행)하거나 기계 학습 엔진과 상호 작용할 필요가 없도록 중앙 집중식 서비스를 제공할 수 있다. 따라서, 주어진 애플리케이션은 기계 학습 모델(들)을 저장, 관리, 트레이닝 및/또는 구현할 필요가 없지만 대신 온-디바이스 기계 학습 플랫폼과 통신하여 모델(들)로부터 추론을 요청 및 수신할 수 있다. 이를 통해 애플리케이션의 데이터 사이즈를 줄일 수 있다. 또한 애플리케이션 개발자가 각기 다른 기계 학습 엔진의 복잡성을 배워야 되는 것이 아니라 대신 단순히 플랫폼 API 사용에 의존할 수 있으므로 애플리케이션 또는 다른 클라이언트의 개발 및 배포를 단순화할 수 있다.As another example of technical effectiveness and benefits, on-device machine learning platforms can provide centralized services so that applications do not need to manage (e.g., train and/or run) machine learning models or interact with machine learning engines. can Thus, a given application does not need to store, manage, train and/or implement the machine learning model(s), but may instead communicate with the on-device machine learning platform to request and receive inferences from the model(s). This can reduce the data size of the application. It also simplifies the development and deployment of applications or other clients as application developers do not have to learn the complexities of different machine learning engines, but can instead simply rely on using the platform APIs.

이전의 효과 및 이점과 유사하게, 온-디바이스 기계 학습 플랫폼은 또한 모든 애플리케이션이 아닌 단일 중앙 집중식 서비스의 용이한 업데이트를 가능하게 할 수 있다. 예를 들어, 새로운 버전 또는 유형의 기계 학습 엔진이 시작되면, 애플리케이션 또는 다른 클라이언트가 그 엔진과 상호 작용하지 않고 플랫폼을 대신하여 사용하기 때문에, 일반적으로 온-디바이스 플랫폼만 새로운 엔진과 상호 작용하도록 업데이트해야 한다. 따라서 엔진 기술이 발전함에 따라 온-디바이스 플랫폼에 의존하여 최신 상태를 유지할 수 있으므로 애플리케이션이 최신 버전(들)의 기계 학습 엔진과 호환되도록 지속적으로 보장할 필요가 없다.Similar to the previous effects and benefits, an on-device machine learning platform may also enable easy updating of a single centralized service rather than all applications. For example, when a new version or type of machine learning engine is launched, typically only the on-device platform is updated to interact with the new engine, as applications or other clients use it on behalf of the platform rather than interacting with that engine. Should be. This eliminates the need to constantly ensure that your application is compatible with the latest version(s) of the machine learning engine, as you can rely on the on-device platform to keep you up to date as engine technology evolves.

또 다른 예시적인 기술적 효과 및 이점으로서, 온-디바이스 기계 학습 플랫폼은 통신 네트워크 효율 및 사용을 향상시킬 수 있다. 즉, 기계 학습이 온-디바이스가 아닌 서버에 의해 수행되는 과거의 패러다임 하에서는, 다양한 유형의 정보(예를 들어, 입력 데이터, 트레이닝 예제, 추론, 모델 파라미터 등)가 통신 네트워크(예를 들어, 인터넷)를 통해 서버에 의해 디바이스로 전송되어야 했다. 그러나, 본 개시는 온-디바이스 예측, 트레이닝, 예제 수집, 및/또는 다른 기계 학습 태스크 또는 기능을 가능하게 하기 때문에, 이러한 정보는 통신 네트워크를 통해 (적어도 모든 인스턴스에서) 전송될 필요가 없다. 따라서, 통신 네트워크 트래픽, 효율성 및 사용이 향상된다. 또한, 입력 데이터, 트레이닝 예제 등이 서버와 송수신되지 않기 때문에 데이터의 보안이 향상될 수 있다.As another exemplary technical effect and advantage, the on-device machine learning platform can improve communication network efficiency and usage. That is, under the past paradigm where machine learning is performed by servers rather than on-devices, various types of information (e.g., input data, training examples, inferences, model parameters, etc.) ) to the device by the server. However, as the present disclosure enables on-device prediction, training, example collection, and/or other machine learning tasks or functions, such information need not be transmitted (at least in all instances) over a communication network. Thus, communication network traffic, efficiency and usage are improved. In addition, since input data, training examples, etc. are not transmitted and received with the server, data security can be improved.

이제 도면들을 참조하여, 본 개시의 예시적인 실시예가 보다 상세하게 논의될 것이다.Referring now to the drawings, exemplary embodiments of the present disclosure will be discussed in more detail.

예시적인 디바이스 및 시스템Exemplary devices and systems

도 1은 본 개시의 예시적인 실시예에 따른 온-디바이스 기계 학습 플랫폼(122)을 포함하는 예시적인 컴퓨팅 디바이스(102)의 블록도를 도시한다.1 shows a block diagram of an example computing device 102 that includes an on-device machine learning platform 122 in accordance with an exemplary embodiment of the present disclosure.

컴퓨팅 디바이스(102)는 예를 들어 데스크탑, 랩탑, 태블릿 컴퓨팅 디바이스, 스마트 폰, 착용 가능한 컴퓨팅 디바이스, 게임 콘솔, 내장 컴퓨팅 디바이스 또는 다른 형태의 컴퓨팅 디바이스를 포함하는 임의의 유형의 컴퓨팅 디바이스일 수 있다. 따라서, 일부 구현에서, 컴퓨팅 디바이스(102)는 모바일 컴퓨팅 디바이스 및/또는 사용자 컴퓨팅 디바이스일 수 있다.Computing device 102 may be any type of computing device including, for example, a desktop, laptop, tablet computing device, smart phone, wearable computing device, game console, embedded computing device, or other form of computing device. Accordingly, in some implementations, computing device 102 may be a mobile computing device and/or a user computing device.

컴퓨팅 디바이스(102)는 하나 이상의 프로세서(112) 및 메모리(114)를 포함한다. 하나 이상의 프로세서(112)는 임의의 적합한 처리 디바이스(예를 들어, 프로세서 코어, 마이크로 프로세서, ASIC, FPGA, 컨트롤러, 마이크로 컨트롤러 등)일 수 있고, 동작 가능하게 연결된 하나의 프로세서 또는 복수의 프로세서일 수 있다. 메모리(114)는 RAM, ROM, EEPROM, EPROM, 플래시 메모리 디바이스, 자기 디스크, 및 이들의 조합과 같은 하나 이상의 비-일시적 컴퓨터 판독 가능 저장 매체를 포함할 수 있다. 메모리(114)는 프로세서(112)에 의해 실행되어 컴퓨팅 디바이스(102)로 하여금 동작들을 수행하게 하는 데이터 및 명령들을 저장할 수 있다. 컴퓨팅 디바이스(102)는 또한 하나 이상의 네트워크(예를 들어, 인터넷)를 통한 통신을 가능하게 하는 네트워크 인터페이스(116)를 포함할 수 있다.Computing device 102 includes one or more processors 112 and memory 114 . The one or more processors 112 may be any suitable processing device (e.g., processor core, microprocessor, ASIC, FPGA, controller, microcontroller, etc.), and may be one processor or multiple processors operatively coupled. have. Memory 114 may include one or more non-transitory computer-readable storage media such as RAM, ROM, EEPROM, EPROM, flash memory devices, magnetic disks, and combinations thereof. Memory 114 may store data and instructions that are executed by processor 112 to cause computing device 102 to perform operations. Computing device 102 may also include a network interface 116 that enables communication over one or more networks (eg, the Internet).

온-디바이스 기계 학습 플랫폼(122)은 온-디바이스 예측, 트레이닝, 예제 수집, 및/또는 "기계 학습 기능"으로 통칭될 수 있는 다른 기계 학습 태스크 또는 기능을 가능하게 할 수 있다.The on-device machine learning platform 122 may enable on-device prediction, training, example collection, and/or other machine learning tasks or functions, which may be collectively referred to as “machine learning functions.”

온-디바이스 기계 학습 플랫폼(122)은 컴퓨팅 디바이스(102)(예를 들어, 스마트 폰 또는 태블릿)에 로컬로 저장된 하나 이상의 컴퓨터 프로그램의 형태일 수 있으며, 이는 디바이스(102)에 의해 실행될 때, 하나 이상의 로컬에 저장된 애플리케이션(102a-c) 또는 다른 로컬 클라이언트를 대신하여 온-디바이스 기계 학습 기능의 수행을 가능하게 하도록 구성된다. 온-디바이스 기계 학습 기능 중 적어도 일부는 컴퓨팅 디바이스(102)에 로컬로 구현된 하나 이상의 기계 학습 엔진(128)을 사용하여 수행될 수 있다. 하나 이상의 로컬로 저장된 애플리케이션(120a-c) 또는 루틴("클라이언트"로 지칭될 수 있음)을 대신하여 온-디바이스 기계 학습 기능의 수행은 하나 이상의 애플리케이션 프로그래밍 인터페이스(API)를 통해 온-디바이스 기계 학습 플랫폼(122)과 상호 작용할 수 있는 클라이언트들에 중앙 집중식 서비스로서 제공될 수 있다.The on-device machine learning platform 122 may be in the form of one or more computer programs stored locally on the computing device 102 (eg, a smart phone or tablet), which, when executed by the device 102 , and enable execution of on-device machine learning functions on behalf of the above locally stored applications 102a - c or other local clients. At least some of the on-device machine learning functions may be performed using one or more machine learning engines 128 implemented locally on the computing device 102 . The performance of on-device machine learning functions on behalf of one or more locally stored applications 120a - c or routines (which may be referred to as “clients”) is performed via one or more application programming interfaces (APIs) for on-device machine learning. It may be provided as a centralized service to clients capable of interacting with the platform 122 .

또한, 일부 구현에서, 온-디바이스 기계 학습 플랫폼(122)은 컨텍스트 특징을 수집된 트레이닝 예제 및/또는 예측/추론을 생성하는데 사용되는 클라이언트 제공 입력 데이터에 안전하게 삽입하는 컨텍스트 제공자를 포함할 수 있다. 따라서, 온-디바이스 기계 학습 플랫폼(122)은 애플리케이션(120a-c) 또는 다른 클라이언트에 대한 서비스로서 기계 학습 모델(132a-c)의 중앙 집중식 트레이닝 예제 수집, 모델 트레이닝 및 사용을 가능하게 할 수 있다.Further, in some implementations, the on-device machine learning platform 122 may include a context provider that securely inserts context features into the collected training examples and/or client-supplied input data used to generate predictions/inferences. Thus, on-device machine learning platform 122 may enable centralized training example collection, model training, and use of machine learning models 132a-c as a service to applications 120a-c or other clients. .

보다 구체적으로, 컴퓨팅 디바이스(102)는 하나 이상의 애플리케이션(120a-c)(예를 들어, 모바일 애플리케이션)을 저장하거나 포함할 수 있다. 컴퓨팅 디바이스(102)는 또한 온-디바이스 기계 학습 플랫폼(122) 및 하나 이상의 기계 학습 모델(132a-c)을 포함하고 구현할 수 있다. 예를 들어, 기계 학습 모델(132a-c)은 플랫폼(122)에 의해 관리되는 중앙 집중식 모델 저장소(130)에 디바이스(102)에 의해 저장될 수 있다.More specifically, computing device 102 may store or include one or more applications 120a - c (eg, mobile applications). Computing device 102 may also include and implement an on-device machine learning platform 122 and one or more machine learning models 132a - c . For example, machine learning models 132a - c may be stored by device 102 in a centralized model repository 130 managed by platform 122 .

본 개시의 일 양태에 따르면, 애플리케이션(120a-c)은 API("예측 API"로 지칭될 수 있음)를 통해 온-디바이스 기계 학습 플랫폼(122)과 통신하여 입력 데이터를 제공하고, 하나 이상의 기계 학습 모델(132a-c)로부터의 입력 데이터에 기초하여 예측을 획득할 수 있다. 예로서, 일부 구현에서, 예측 계획(예를 들어, 추론/예측을 획득하기 위해 모델을 실행하는 명령들) 및 모델 파라미터들에 대한 URI가 주어지면, 온-디바이스 기계 학습 플랫폼(122)은 모델을 실행함으로써(예를 들어, 기계 학습 엔진(128)과 상호 작용하여 엔진에 의한 모델 구현을 유발함으로써) URI 컨턴츠(예를 들어, 예측 계획 및 파라미터)를 다운로드하고 하나 이상의 추론/예측을 획득할 수 있다. 또한, 플랫폼(122)은 후속 예측 요청에 사용될 수 있도록 컨텐츠를(예를 들어, 저장소(130) 내에) 캐싱할 수 있다.In accordance with one aspect of the present disclosure, applications 120a - c communicate with on-device machine learning platform 122 via an API (which may be referred to as a “prediction API”) to provide input data, and one or more machines Predictions may be obtained based on input data from the learning models 132a - c. As an example, in some implementations, given a prediction plan (eg, instructions to run a model to obtain inference/prediction) and URIs for model parameters, the on-device machine learning platform 122 can download URI contents (e.g., prediction plans and parameters) and obtain one or more inferences/predictions by executing can Additionally, platform 122 may cache content (eg, in storage 130 ) for use in subsequent prediction requests.

따라서, 온-디바이스 기계 학습 모델(132a-c)은 클라이언트/서비스 관계를 통해 온-디바이스 기계 학습 플랫폼(122)과 통신함으로써 애플리케이션(120a-c)에 의해 액세스될 수 있다. 예를 들어, 개별 기계 학습 모델(132a-c)은 각각의 애플리케이션(120a-c)에 제공되고 플랫폼(122)에 의해 관리될 수 있다. 다른 구현에서, 둘 이상의 애플리케이션들(120a-c)은 단일 기계 학습 모델(132a-c)을 공유할 수 있거나 단일 애플리케이션(120a-c)은 둘 이상의 모델들(132a-c)을 가질 수 있다.Accordingly, the on-device machine learning models 132a - c may be accessed by the applications 120a - c by communicating with the on-device machine learning platform 122 through a client/service relationship. For example, individual machine learning models 132a - c may be provided to each application 120a - c and managed by the platform 122 . In another implementation, two or more applications 120a-c may share a single machine learning model 132a-c or a single application 120a-c may have two or more models 132a-c.

일부 구현에서, 기계 학습 플랫폼(122)은 애플리케이션들(120a-c)에 의해 참조될 수 있는 독립형 다중 테넌트 서비스일 수 있다. 이와 같이, 주어진 애플리케이션(120a-c)은 기계 학습 모델(들)(132a-c)을 저장, 관리, 트레이닝 및/또는 구현하는데 필요하지 않지만, 그 대신 간단히 온-디바이스 기계 학습 플랫폼(122)과 통신하여 모델(들)(132a-c)로부터 추론을 요청하고 수신한다.In some implementations, machine learning platform 122 may be a standalone multi-tenant service that may be referenced by applications 120a - c. As such, a given application 120a-c is not required to store, manage, train, and/or implement machine learning model(s) 132a-c, but instead simply interact with the on-device machine learning platform 122 . Communicate to request and receive inferences from model(s) 132a-c.

본 개시의 다른 양태에 따르면, 컴퓨팅 디바이스(102)는 애플리케이션들(120a-c)로부터 수신된 트레이닝 예를 저장하는 중앙 집중식 예제 데이터베이스(124)를 더 포함할 수 있다. 특히, 온-디바이스 기계 학습 플랫폼(122)은 API("수집 API"로 지칭될 수 있음)를 통해 애플리케이션(120a-c)으로부터 트레이닝 예제들을 수신할 수 있고, 중앙 집중식 예제 데이터베이스(124)에서 그 예제들의 저장을 관리 할 수 있다. 예를 들어, 플랫폼(122)의 클라이언트 또는 테넌트인 각 애플리케이션(120a-c)은 중앙 집중식 예제 데이터베이스(124) 내에 저장된 자신의 예제의 컬렉션(들)을 가질 수 있고, 그 컬렉션(들)은 온라인 방식으로 보충 및/또는 관리될 수 있다.According to another aspect of the present disclosure, computing device 102 may further include a centralized example database 124 that stores training examples received from applications 120a - c. In particular, the on-device machine learning platform 122 may receive training examples from the applications 120a - c via an API (which may be referred to as an "aggregation API"), and may receive training examples from the centralized examples database 124 . You can manage the storage of examples. For example, each application 120a - c that is a client or tenant of the platform 122 may have its own collection(s) of examples stored in a centralized example database 124 , and the collection(s) are online may be supplemented and/or administered in this manner.

일부 구현에서, 온-디바이스 기계 학습 플랫폼(122)은 트레이닝 예제를 제공하는 애플리케이션(120a-c)과 관련된 하나 이상의 옵션 파라미터에 따라 애플리케이션(120a-c)으로부터 수신된 각각의 트레이닝 예제를 (예를 들어, 그의 대응하는 컬렉션 내에) 저장하게 할 수 있다. 일 예로서, 옵션 파라미터들은 트레이닝 예제들이 저장되는(예를 들어, 그 후 삭제되는) 시간 기간을 정의하는 유효 기간 파라미터를 포함할 수 있다. 일부 구현에서, 옵션 파라미터들은 수집 API를 통해 플랫폼(122)에 제공되는 명령들을 통해 사전 정의 및/또는 조정될 수 있다.In some implementations, the on-device machine learning platform 122 evaluates each training example received from the application 120a-c according to one or more optional parameters associated with the application 120a-c providing the training example (e.g., For example, in its corresponding collection). As an example, the optional parameters may include a validity period parameter that defines a period of time during which training examples are stored (eg, deleted thereafter). In some implementations, optional parameters may be predefined and/or adjusted via commands provided to the platform 122 via the aggregation API.

본 개시의 다른 양태에 따르면, 일부 구현에서, 온-디바이스 기계 학습 플랫폼(122)은 컴퓨팅 디바이스(102)와 관련된 컨텍스트를 설명하는 컨텍스트 특징들을 트레이닝 예제들로 안전하게 삽입할 수 있다. 예를 들어, 애플리케이션(120a-c)으로부터 트레이닝 예제를 수신하면, 온-디바이스 플랫폼(122)의 컨텍스트 제공자 컴포넌트는 하나 이상의 컨텍스트 특징을 결정하여 이러한 컨텍스트 특징들을 트레이닝 예제와 함께 중앙 집중식 예제 데이터베이스(124)에 저장할 수 있다. 예를 들어, 새로운 트레이닝 예제에서 제공되는 컨텍스트 기능들 및 데이터는 단일 데이터베이스 항목으로 저장될 수 있다. 특정 애플리케이션(120a-c)으로부터 수신된 트레이닝 예제로 결정된 다음 삽입되거나 달리 관련되고 및/또는 저장되는 특정 컨텍스트 특징들은 그러한 특정 애플리케이션(120a-c)에 대한 옵션 파라미터들에 의해 특정될 수 있다. 위에서 설명한 것처럼 이러한 옵션 기능들은 수집 API를 통해 조정하거나 미리 정의될 수 있다. 따라서, 애플리케이션(120a-c)은 (예를 들어, 옵션 파라미터를 정의함으로써) 어떤 컨텍스트 특징 또는 컨텍스트 유형이 그의 트레이닝 예제에 삽입되는지를 제어할 수 있다.According to another aspect of the present disclosure, in some implementations, the on-device machine learning platform 122 can safely insert contextual features that describe the context associated with the computing device 102 into training examples. For example, upon receiving training examples from applications 120a - c, the context provider component of on-device platform 122 determines one or more context characteristics and combines these context characteristics with training examples into a centralized example database 124 . ) can be stored in For example, contextual functions and data provided in a new training example may be stored as a single database item. Specific contextual characteristics that are then inserted or otherwise associated and/or stored with a training example received from a particular application 120a-c may be specified by optional parameters for that particular application 120a-c. As described above, these optional features can be customized or predefined via the ingest API. Accordingly, applications 120a - c can control which context features or context types are inserted into its training examples (eg, by defining optional parameters).

일부 구현에서, 컨텍스트 특징들이 애플리케이션(120a-c)에 직접 이용 가능할 필요가 없도록 컨텍스트 특징들은 서비스 측에 삽입된다. 특히 일부 구현에서, 중앙 집중식 예제 데이터베이스(124)는 하나 이상의 애플리케이션(120a-c)에 의해 직접 액세스 가능하지 않으므로, 특정 트레이닝 예제와 함께 저장된 컨텍스트 정보는 트레이닝 예제를 제공한 애플리케이션(120a-c)조차도 액세스할 수 없다.In some implementations, context features are inserted on the service side so that context features do not have to be available directly to applications 120a - c. In particular, in some implementations, the centralized example database 124 is not directly accessible by one or more applications 120a-c, so that contextual information stored with a particular training example is not accessible even by the application 120a-c that provided the training example. can't access

일부 구현에서, 컨텍스트 특징들은 다수의 상이한 컨텍스트 유형들에 따라 그룹화되거나 분류될 수 있다. 일반적으로 각 컨텍스트 유형은 잘 알려진 이름 및 잘 알려진 유형의 컨텍스트 특징 세트를 지정하거나 포함할 수 있다. 하나의 예시적인 컨텍스트 유형은 오디오 상태, 네트워크 상태, 전원 연결 등의 예시적인 컨텍스트 특징을 포함하는 디바이스 정보이다.In some implementations, context characteristics may be grouped or classified according to a number of different context types. In general, each context type may specify or contain a well-known name and a set of context characteristics of the well-known type. One example context type is device information including example context characteristics such as audio status, network status, power connection, and the like.

일부 구현에서, 컨텍스트 제공자는 삽입 시간/시점에서 디바이스(예를 들어, 디바이스의 컨텍스트 관리자)로부터 주어진 컨텍스트 특징에 대해 삽입된 값을 요청한다. 대안적으로 또는 추가적으로, 컨텍스트 제공자는 하나 이상의 컨텍스트 업데이트에 대한 리스너로서 등록할 수 있고, 하나 이상의 컨텍스트 업데이트에 기초하여 컨텍스트 특징에 대한 현재 값의 컨텍스트 특징 캐시를 유지할 수 있다. 그런 다음 컨텍스트 특징이 삽입되면, 컨텍스트 제공자는 컨텍스트 특징 캐시에 액세스하여, 특정 컨텍스트 특징에 대해 캐시에 유지된 현재 값을 삽입한다.In some implementations, the context provider requests the inserted value for a given context characteristic from the device (eg, the device's context manager) at insertion time/point. Alternatively or additionally, a context provider may register as a listener for one or more context updates, and may maintain a context feature cache of current values for context features based on one or more context updates. Then, when the context feature is inserted, the context provider accesses the context feature cache and inserts the current value held in the cache for that particular context feature.

저장 시간에 트레이닝 예제에 컨텍스트 특징을 삽입하는 것에 추가하여 또는 대안적으로, 컨텍스트 제공자는 또한 추론 시간에 컨텍스트 특징의 삽입을 수행할 수 있다. 특히, 특정 애플리케이션(120a-c) 또는 다른 클라이언트가 (예를 들어, 예측 API를 통해) 일부 클라이언트 제공 입력 데이터에 기초하여 추론이 생성되도록 요청하는 경우, 예제 수집을 트레이닝하는 전술한 프로세스와 유사하게, 컨텍스트 제공자는 입력 데이터와 함께 해당 기계 학습 모델(132a-c)에 입력하기 위한 보충 컨텍스트 특징을 삽입하거나 제공할 수 있다. 따라서, 클라이언트 제공 입력 데이터에 더하여 컨텍스트 정보에 적어도 부분적으로 기초하여 추론이 이루어질 수 있으며, 이는 추론의 정확성을 향상시키는데 도움이 될 수 있다.In addition to or alternatively to inserting the context feature into the training example at storage time, the context provider may also perform the inserting of the context feature at inference time. In particular, when a particular application 120a-c or another client requests that inferences be generated based on some client-supplied input data (eg, via a prediction API), similar to the process described above for training example collection, , the context provider may insert or provide supplemental context features for input into the corresponding machine learning models 132a-c along with the input data. Accordingly, inferences may be made based at least in part on context information in addition to client-provided input data, which may help to improve the accuracy of the inferences.

다른 양태에 따르면, 특정 애플리케이션(120a-c) 또는 다른 클라이언트들은(예를 들어, 디바이스 사용자에 의해 정의되거나 제어되는 바와같이) 특정 컨텍스트 특징들 또는 컨텍스트 유형들에만 액세스할 수 있는 권한을 가질 수 있기 때문에, 컨텍스트 제공자는 클라이언트 권한 제어를 수행할 수 있다. 특히, 일부 구현에서, 온-디바이스 기계 학습 플랫폼(122) 또는 다른 디바이스 컴포넌트는 어느 클라이언트가 어떤 컨텍스트 유형 또는 컨텍스트 특징에 액세스할 수 있는 권한을 갖는지에 대한 매핑을 유지할 수 있다. 컨텍스트 특징들이 삽입될 때(예를 들어, 저장을 위한 트레이닝 예제로 또는 추론 시간에 클라이언트 제공-입력 데이터를 보완하기 위해), 컨텍스트 제공자는 삽입될 컨텍스트 특징 또는 컨텍스트 유형에 대해 대응하는 애플리케이션(120a-c) 또는 다른 클라이언트의 권한 상태를 확인할 수 있다. 예를 들어, 특정 애플리케이션(120a-c) 및 컨텍스트 유형에 대한 권한 상태는 이러한 애플리케이션(120a-c)이 그러한 컨텍스트 유형에 액세스하기 위한 권한을 갖는지 여부를 기술할 수 있다. 콘텍스트 제공자는 애플리케이션(120a-c)이 액세스할 권한을 갖는 콘텍스트 유형에 포함된 콘텍스트 특징들만을 삽입함으로써, 애플리케이션(120a-c)이 (간접적인 방식으로도) 액세스할 권한을 갖지 않는 컨텍스트 특징/타입에 액세스하는 것을 방지할 것이다. According to another aspect, certain applications 120a - c or other clients (eg, as defined or controlled by the device user) may have access to only certain context features or context types. Therefore, the context provider can perform client privilege control. In particular, in some implementations, the on-device machine learning platform 122 or other device component may maintain a mapping of which clients have permission to access which context types or context features. When context features are inserted (eg, as a training example for storage or to supplement client-provided-input data at inference time), the context provider responds to the corresponding application 120a- for the context feature or context type to be inserted. c) Alternatively, you can check the authorization status of other clients. For example, a permission state for a particular application 120a-c and context type may describe whether such application 120a-c has permission to access that context type. The context provider inserts only those context features contained in the context type that the application 120a-c has permission to access, thereby providing context features/that the application 120a-c does not have permission to access (even in an indirect way). It will prevent you from accessing the type.

전술한 유효 기간 옵션 파라미터와 유사하게, 일부 구현에서, 각각의 컨텍스트 특징은 이와 관련되거나 이에 할당된 만료 기간을 가질 수 있다. 이 만료 기간 정보는 컨텍스트 특징(들)이 포함된 각 트레이닝 예제와 관련될 수 있다. 일부 구현에서, 특정 트레이닝 예제에서 제공되는 특정 컨텍스트 특징에 대한 만료 기간의 종료시에, 이러한 컨텍스트 특징에 대한 값이 그러한 트레이닝 예제에서 삭제되거나 제거될 수 있다. 대안적으로, 전체 트레이닝 예제가 삭제되거나 제거될 수 있다.Similar to the validity period option parameter described above, in some implementations, each context feature may have an expiration period associated with or assigned to it. This expiry period information may be associated with each training example with context feature(s) included. In some implementations, at the end of an expiration period for a particular context feature provided in a particular training example, the value for that context feature may be deleted or removed from that training example. Alternatively, the entire training example may be deleted or removed.

또한, 일부 구현에서, 특정 컨텍스트 특징 또는 컨텍스트 유형에 대한 특정 애플리케이션(120a-c) 또는 다른 클라이언트에 대한 권한 상태에 대한 변경에 응답하여, 온-디바이스 플랫폼(122)은 중앙 집중식 예제 데이터베이스로부터 특정 애플리케이션과 관련된 트레이닝 예제와 관련된 이러한 컨텍스트 특징(들) 또는 유형(들)에 대한 임의의 값 또는 항목을 삭제할 수 있다. 또한, 일부 구현에서, 대응하는 모델(들)(132a-c)은 컨텍스트 특징 값(들)의 삭제후에 나머지 데이터에 대해 재 트레이닝될 수 있다.Further, in some implementations, in response to a change to the authorization status for a particular application 120a-c or other client for a particular context characteristic or context type, the on-device platform 122 may Any value or item for such context feature(s) or type(s) associated with the training example associated with may be deleted. Also, in some implementations, the corresponding model(s) 132a - c may be retrained on the remaining data after deletion of the context feature value(s).

본 개시의 또 다른 양태에 따르면, 애플리케이션(120a-c)은 API("트레이닝 API"라고도 함)를 통해 온-디바이스 기계 학습 플랫폼과 통신하여 중앙 집중식 예제 데이터 베이스에 저장된 트레이닝 예제에 기초하여 기계 학습 모델의 재 트레이닝 또는 업데이트를 야기할 수 있다. 예로서, 일부 구현에서, 트레이닝 계획에 대한 URI(예를 들어, 모델 트레이닝을 위한 명령)가 주어지면, 온-디바이스 기계 학습 플랫폼(122)은 이전에 수집된 예제에 기초하여 (예를 들어, 엔진(128)에 의해 모델(132a-c)의 트레이닝을 유발하도록 기계 학습 엔진(128)과 상호 작용함으로써) 모델(132a-c)에 대한 트레이닝을 실행할 수 있다. 예를 들어, 트레이닝은 스케줄링된 시간 및/또는 디바이스가 유휴 상태일 때 백그라운드로 수행될 수 있다.According to another aspect of the present disclosure, applications 120a - c communicate with an on-device machine learning platform via an API (also referred to as a “training API”) to learn machine learning based on training examples stored in a centralized database of examples. It can cause retraining or updating of the model. As an example, in some implementations, given a URI to a training plan (eg, an instruction for training a model), the on-device machine learning platform 122 may be configured based on previously collected examples (eg, may execute training on models 132a-c (by interacting with machine learning engine 128 to cause training of models 132a-c by engine 128). For example, training may be performed in the background at scheduled times and/or when the device is idle.

모델(123a-c)의 재 트레이닝 후, 재 트레이닝된 모델(123a-c)은 본 개시의 다른 곳에 기술된 바와 같이 추론을 제공하는데 사용될 수 있다. 일반적으로, 이러한 추론은 모델(123a-c)이 사용자에게 특정된 데이터에 대해 재 트레이닝되었기 때문에 더 높은 정확도를 갖을 것이다. 따라서, 온-디바이스 기계 학습 플랫폼(122)은 애플리케이션(120a-c) 또는 다른 클라이언트에 대한 서비스로서 기계 학습 모델(132a-c)의 중앙 집중식 예시 데이터 수집 및 대응하는 개인화를 가능하게 할 수 있다.After retraining the models 123a-c, the retrained models 123a-c may be used to provide inferences as described elsewhere in this disclosure. In general, such inferences will have higher accuracy because models 123a-c have been retrained on user-specific data. Accordingly, on-device machine learning platform 122 may enable centralized example data collection and corresponding personalization of machine learning models 132a-c as a service to applications 120a-c or other clients.

다른 양태에 따르면, 일부 구현에서, 기계 학습 플랫폼(122)은 기계 학습 메트릭의 상세한 분석을 위해 기계 학습 모델(132a-c)에 관한 로그 또는 다른 업데이트를 클라우드에 업로드할 수 있다. 예로서, 일부 구현에서, 온-디바이스 플랫폼(122)은 재 트레이닝된 기계 학습 모델(132a-c)의 파라미터 또는 모델(132a-c)의 재 트레이닝 동안 발생된 기계 학습 모델(132a-c)의 파라미터(예를 들어, "기울기(gradient)")에 대한 변경을 기술하는 업데이트를 결정할 수 있다. 플랫폼(122)은 다른 컴퓨팅 디바이스에 의해 제공된 다른 업데이트와의 통합을 위해 업데이트를 중앙 서버 컴퓨팅 디바이스(예를 들어, "클라우드")로 전송할 수 있다. 따라서, 플랫폼은 "연합 학습"으로 알려진 프로세스에 참여할 수 있으며, 여기서 디바이스는 로컬로 저장된 데이터에 기초하여 모델(132a-c)에 대한 로컬 업데이트를 결정한 다음, 그 로컬 업데이트를 집계를 위해 (예를 들어, 프라이버시 보호 및 통신 효율적인 방식으로) 클라우드 서비스로 전달하여 그 모델(132a-c)에 대한 글로벌 업데이트를 생성한다.According to another aspect, in some implementations, machine learning platform 122 may upload logs or other updates regarding machine learning models 132a - c to the cloud for detailed analysis of machine learning metrics. As an example, in some implementations, the on-device platform 122 configures parameters of the retrained machine learning models 132a-c or machine learning models 132a-c generated during the retraining of the models 132a-c. An update that describes a change to a parameter (eg, a “gradient”) may be determined. Platform 122 may send updates to a central server computing device (eg, the “cloud”) for integration with other updates provided by other computing devices. Thus, the platform may engage in a process known as “federated learning,” in which the device determines local updates to models 132a-c based on locally stored data, and then aggregates those local updates for aggregation (e.g., For example, it generates global updates to its models 132a-c by forwarding it to a cloud service (in a privacy-preserving and communication-efficient manner).

다른 양태에 따르면, 일부 구현에서, 애플리케이션들(120a-c)을 서로로부터 보호하기 위해, 각 애플리케이션(120a-c)은 온-디바이스 플랫폼(122)에 의해 제공되는 특정 기능들(예를 들어, 모든 기능에 대해)에 대한 자체 엔클레이브를 가질 수 있다. 예를 들어, 플랫폼(122)은 플랫폼(122)에 액세스하기 위한 인터페이스가 팩토리를 통해 애플리케이션(120a-c)으로 리턴되기 전에 애플리케이션(120a-c)을 인증할 수 있다. 리턴된 인터페이스는 플랫폼(122)에서 애플리케이션 엔클레이브의 단독 뷰를 나타낼 수 있다. 이 프로세스의 하나의 예시적인 구현에서, 애플리케이션(120a-c)이 플랫폼(122)의 API에 연결될 때, 애플리케이션(120a-c)은 애플리케이션(120a-c)의 신원을 검증하는 서명된 패키지 토큰을 제공할 수 있다. 애플리케이션(120a-c)은 이 인증을 통과하지 않고 API 인터페이스를 얻을 수 없다.According to another aspect, in some implementations, in order to protect applications 120a - c from each other, each application 120a - c has specific functions provided by the on-device platform 122 (eg, You can have your own enclave for all functions). For example, the platform 122 may authenticate the applications 120a - c before the interface for accessing the platform 122 is returned to the applications 120a - c through the factory. The returned interface may represent the sole view of the application enclave on the platform 122 . In one example implementation of this process, when an application 120a-c connects to the API of the platform 122 , the application 120a-c receives a signed package token that verifies the identity of the application 120a-c. can provide Applications 120a-c cannot obtain the API interface without passing this authentication.

일부 구현에서, 플랫폼(122) 내의 각 애플리케이션의 엔클레이브는 계정 독립적이다. 따라서, 컴퓨팅 디바이스(102)상의 동일한 사용자 프로파일과 관련된 다수의 계정은 동일한 트레이닝 데이터 및 상태를 공유할 수 있다. 이는 대부분의 경우 다수의 계정이 동일한 사용자를 위한 것이며 컴퓨팅 디바이스의 다른 사용자는 다른 사용자 프로필을 대신 사용한다는 것을 반영한다. In some implementations, the enclave of each application within the platform 122 is account independent. Accordingly, multiple accounts associated with the same user profile on computing device 102 may share the same training data and status. This reflects that, in most cases, multiple accounts are for the same user, and different users of the computing device use different user profiles instead.

일부 구현에서, 특정 기능(예를 들어, 컨텍스트에 액세스)에 대해, 권한이 요구된다. 이와 같이, 일부 구현에서, 컨텍스트가 플랫폼(122) 내에 유지되기 때문에 컨텍스트에 직접 접촉하지 않더라도, 플랫폼(122)에서 특정 컨텍스트를 사용하고자 하는 애플리케이션(120a-c)은 특정 컨텍스트에 액세스할 수 있는 권한을 갖는다. 일부 구현에서, 모든 관련 권한은 클라이언트에서 검증된 후 플랫폼 호출로 전달될 수 있고, 플랫폼(122)은 논리적으로 이 권한 세트(들)로 동작하게 한다. 일부 구현에서, 플랫폼(122)은 사용자에게 모든 권한에 대한 액세스를 갖는 플랫폼(122)에 대한 동의를 요청할 수 있다. 일부 경우, 컨텍스트는 또한 특정 사용자가 로그인하도록 요구할 수 있다. 이러한 사용자는 해당 사례에 대해 애플리케이션에 의해 지정되거나 컨텍스트 삽입용 옵션에서 선택(적) 필드에 의해 지정될 수 있다. 그러나, 일부 구현에서, 사용자는 플랫폼(122)에 의해 자동으로 검출되지 않을 수 있다. 일부 구현에서, API 자체는 그러한 특정 사용자 계정으로의 인증을 요구하지 않는다.In some implementations, for certain functions (eg, access to context), permissions are required. As such, in some implementations, applications 120a - c wishing to use a particular context on the platform 122 have the right to access the particular context, even if they do not directly contact the context because the context is maintained within the platform 122 . has In some implementations, all relevant privileges may be passed to the platform call after being verified at the client, causing the platform 122 to logically operate with this privilege set(s). In some implementations, the platform 122 may request the user consent to the platform 122 with access to all permissions. In some cases, the context may also require a specific user to log in. Such a user can be specified by the application for that case, or it can be specified by the select (enemy) field in the options for context insertion. However, in some implementations, the user may not be automatically detected by the platform 122 . In some implementations, the API itself does not require authentication with that particular user account.

본 개시의 다른 양태에 따르면, 일부 구현에서, 온-디바이스 기계 학습 플랫폼(122)은 기본적인 기계 학습 엔진(128)으로부터 완전히 추상화될 수 있다. 예를 들어, 기계 학습 엔진(128)은 추론 및/또는 트레이닝을 위해 기계 학습 모델(132a-c)의 구현을 가능하게 하는 텐서 플로우 엔진, 신경망 라이브러리, 또는 다른 엔진 일 수 있다. 이러한 추상화로 인해, 기계 학습 플랫폼(122)은 모델 아티팩트(132a-c)를 클라우드에서 생성된 다음 디바이스(예를 들어, 동적 모델 다운로드를 통해)로 전달되는 블랍(blob)으로 취급할 수 있으며, 여기서 이후 매칭 엔진(128)에 의해 해석된다. 이러한 방식으로, 기계 학습 플랫폼(122) 및 그의 지원되는 애플리케이션(120a-c)은 기계 학습 엔진(128)에 대한 변경에 대해 탄력적일 수 있고 및/또는 특정 엔진(128) 또는 사용된 엔진 유형에 대해 독립적이거나 유연할 수 있다.According to another aspect of the present disclosure, in some implementations, the on-device machine learning platform 122 may be completely abstracted from the underlying machine learning engine 128 . For example, machine learning engine 128 may be a tensorflow engine, neural network library, or other engine that enables implementation of machine learning models 132a - c for inference and/or training. This abstraction allows the machine learning platform 122 to treat model artifacts 132a-c as blobs that are created in the cloud and then delivered to a device (e.g., via dynamic model downloads), Here it is then interpreted by the matching engine 128 . In this way, the machine learning platform 122 and its supported applications 120a - c may be resilient to changes to the machine learning engine 128 and/or dependent on a particular engine 128 or engine type used. can be independent or flexible.

다른 양태에 따르면, 온-디바이스 플랫폼(122)에 상보적인 툴킷은 디바이스들에 아티팩트로서 전달되기 전에 클라우드에서 모델을 생성하고 시뮬레이션하기 위한 툴 세트(예를 들어, Python 툴)를 제공할 수 있다. 일부 구현에서, 툴킷은 다른 버전의 기계 학습 엔진 또는 심지어 다른 엔진 유형(예를 들어, 모바일 중심 TensorFlow Lite 대 신경망 라이브러리 등)에 대해 동일한 소스 아티팩트(예를 들어, Python 소스 아티팩트)로부터 생성할 수 있다. According to another aspect, a toolkit complementary to the on-device platform 122 may provide a set of tools (eg, Python tools) for creating and simulating models in the cloud before being delivered as artifacts to devices. In some implementations, the toolkit can generate from the same source artifacts (e.g., Python source artifacts) for different versions of machine learning engines or even different engine types (e.g., mobile-centric TensorFlow Lite vs. neural network libraries, etc.). .

일부 구현에서, 온-디바이스 기계 학습 플랫폼(122)은 예를 들어 모바일 애플리케이션과 같은 애플리케이션에 포함되거나 애플리케이션으로서 구현될 수 있다. 예를 들어, 안드로이드 운영 체제의 맥락에서, 온-디바이스 기계 학습 플랫폼(122)은 다운로드 및/또는 업데이트될 수 있는 안드로이드 패키지 키트(APK)에 포함될 수 있다. 하나의 특정 예에서, 온-디바이스 기계 학습 플랫폼(122)은 다른 애플리케이션(120a-c) 또는 디바이스(102) 자체에 다수의 상이한 지원 서비스를 제공하는 더 큰 애플리케이션의 일부로서 포함되거나 구현될 수 있다. 예를 들어, 온-디바이스 기계 학습 플랫폼(122) 외에, 더 큰 애플리케이션은 컴퓨팅 디바이스(102)가 디지털 분배 서비스(예를 들어, "앱 스토어"로부터 애플리케이션 및/또는 업데이트 다운로드) 및/또는 다른 서비스와 상호 작용할 수 있게 하는 서비스를 제공할 수 있다. 다른 예에서, 온-디바이스 기계 학습 플랫폼(122)은 독립형 애플리케이션이 아니라 디바이스(102)의 운영 체제의 일부로서 포함되거나 구현될 수 있다.In some implementations, the on-device machine learning platform 122 may be incorporated into or implemented as an application, such as, for example, a mobile application. For example, in the context of the Android operating system, the on-device machine learning platform 122 may be included in an Android Package Kit (APK) that may be downloaded and/or updated. In one particular example, the on-device machine learning platform 122 may be included or implemented as part of another application 120a - c or a larger application that provides a number of different support services to the device 102 itself. . For example, in addition to the on-device machine learning platform 122 , the larger applications may be that the computing device 102 provides a digital distribution service (eg, downloading applications and/or updates from an “app store”) and/or other services. You can provide services that allow you to interact with In another example, the on-device machine learning platform 122 may be included or implemented as part of the operating system of the device 102 rather than as a standalone application.

도 2는 본 개시의 예시적인 실시예에 따른 예시적인 기계 학습 모델 배치의 그래픽 도면을 도시한다. 특히, 애플리케이션 개발자(202)는 툴킷과 상호 작용하여 모델(204)을 생성 및 테스트할 수 있다. 모델은 추론 계획(206) 및 트레이닝 계획(208)에 의해 적어도 부분적으로 분할되거나 표현될 수 있다.2 depicts a graphical diagram of an exemplary machine learning model deployment in accordance with an exemplary embodiment of the present disclosure. In particular, the application developer 202 may interact with the toolkit to create and test the model 204 . The model may be partitioned or represented at least in part by an inference plan 206 and a training plan 208 .

"계획"은 그래프(예를 들어, 텐서 플로우 그래프) 및 그 그래프를 실행하는 방법에 대한 명령을 포함하는 프로토콜 버퍼(AKA "protobuf")를 포함할 수 있다. 일 예로서, 계획은 그래프 자체를 임베딩(포함)하는 그래프(예를 들어, 텐서 플로우 그래프)상에서 수행될 동작 시퀀스에 대한 선언적 설명일 수 있다. 계획은 트레이닝 데이터에 대한 컬렉션을 조회하는 방법, 그것을 그래프에 피드하는 방법 및/또는 출력을 생성 및 전달하는 방법을 기술할 수 있다.A “plan” may include a graph (eg, a tensorflow graph) and a protocol buffer (AKA “protobuf”) containing instructions on how to execute the graph. As an example, a plan may be a declarative description of a sequence of operations to be performed on a graph (eg, a tensorflow graph) that embeds (contains) the graph itself. A plan may describe how to query a collection for training data, how to feed it to a graph, and/or how to generate and deliver output.

도 2는 2개의 대안적인(그러나 선택적으로 상보적인) 배치 방식을 도시한다. 제1 배치 방식에서, 추론 계획(206) 및 트레이닝 계획(208)은 모두 클라우드 서버(210)에 배치된다. 클라우드 서버(210)는 추론 계획(206) 및 트레이닝 계획(208)을 디바이스(214)로 제공한다.Figure 2 shows two alternative (but optionally complementary) arrangements of arrangements. In a first deployment scheme, both the inference plan 206 and the training plan 208 are deployed on the cloud server 210 . The cloud server 210 provides the inference plan 206 and the training plan 208 to the device 214 .

디바이스(214)는 추론 계획(206)을 구현하여 추론을 생성할 수 있다. 디바이스(214)는 대안적으로 또는 추가적으로 트레이닝 계획(208)을 구현하여, 로컬로 저장된 데이터에 기초하여 온-디바이스 트레이닝을 수행할 수 있는데, 이는 "개인화"또는 "개인화된 학습"으로도 지칭될 수 있다.Device 214 may implement inference plan 206 to generate inference. Device 214 may alternatively or additionally implement training plan 208 to perform on-device training based on locally stored data, also referred to as “personalization” or “personalized learning”. can

제2 배치 방식에서, 추론 계획(206)은 전술한 바와 같이 클라우드 서버(210)에 배치된다. 클라우드 서버는 추론 계획(206)을 디바이스(216)로 제공한다. 디바이스(216)는 추론 계획(206)을 구현하여 추론을 생성할 수 있다.In a second deployment scheme, the inference plan 206 is deployed on the cloud server 210 as described above. The cloud server provides the inference plan 206 to the device 216 . Device 216 may implement inference plan 206 to generate inference.

그러나, 트레이닝 계획(208)을 클라우드 서버(210)에 배치하는 것에 추가하여 또는 대안적으로, 제2 방식에서 트레이닝 계획(208)은 연합 서버(212)에 배치된다. 연합 서버(212)는 트레이닝 계획(208)을 디바이스(216)로 제공한다. 디바이스(216)는 트레이닝 계획(208)을 구현하여 로컬로 저장된 데이터에 기초하여 온-디바이스 트레이닝을 수행할 수 있다. 이러한 온-디바이스 학습 후, 디바이스(216)는 연합 서버(212)로 업데이트를 제공할 수 있다. 예를 들어, 업데이트는 재 트레이닝된 모델의 하나 이상의 파라미터 또는 그 모델의 재 트레이닝 동안 발생된 모델의 파라미터에 대한 하나 이상의 변경을 기술할 수 있다.However, in addition to or alternatively to deploying the training plan 208 on the cloud server 210 , in a second manner the training plan 208 is deployed on the federated server 212 . The federation server 212 provides the training plan 208 to the device 216 . Device 216 may implement training plan 208 to perform on-device training based on locally stored data. After this on-device learning, the device 216 may provide an update to the federation server 212 . For example, an update may describe one or more parameters of the retrained model or one or more changes to parameters of the model that occurred during retraining of that model.

연합 서버(212)는 다수의 디바이스로부터 이러한 많은 업데이트를 수신할 수 있고, 그 업데이트들을 집계하여 업데이트된 글로벌 모델을 생성할 수 있다. 이어서 업데이트된 글로벌 모델은 디바이스(216)로 재전송될 수 있다.The federation server 212 may receive many of these updates from multiple devices, and may aggregate the updates to generate an updated global model. The updated global model may then be sent back to device 216 .

또한, 일부 구현에서, 디바이스(216)는 (예를 들어 툴킷과 함께) 개발자(202)에 의해 기계 학습 메트릭의 상세한 분석을 얻기 위해 사용될 수 있는 기계 학습 모델에 관한 로그들(218) 또는 다른 업데이트를 더 제공할 수 있다. 일부 구현에서, 로그들(218)에 기초하여 계산될 수 있는 예시적인 메트릭들은 체크인 요청 결과, 트래픽(예를 들어, 볼륨), 손실 및 정확성 모델 메트릭, 위상 지속 기간, 또는 다른 메트릭의 플롯(plots), 그래프 또는 시각화를 포함한다.Further, in some implementations, device 216 (eg, along with a toolkit) logs 218 or other updates regarding the machine learning model that can be used by developer 202 to obtain detailed analysis of machine learning metrics. can provide more. In some implementations, example metrics that may be calculated based on logs 218 include plots of check-in request results, traffic (eg, volume), loss and accuracy model metrics, phase duration, or other metrics. ), graphs or visualizations.

도 3은 본 개시의 예시적인 실시예에 따른 예시적인 개인화 및 연합 학습 데이터 흐름의 그래픽 도면을 도시한다.3 depicts a graphical diagram of an exemplary personalized and federated learning data flow in accordance with an exemplary embodiment of the present disclosure.

보다 구체적으로, 도 3은 일부 경우에서 상보적인 방식으로 사용될 수 있는 3개의 상이한 학습 데이터 흐름을 도시한다. 도 3의 하단에 주로 점선으로 도시된 제1 데이터 흐름에서, 트레이닝 데이터는 사용자 디바이스에서 생성된다. 트레이닝 데이터는 중앙 기관으로 업로드된 후 업로드된 데이터에 기초하여 기계 학습 모델을 트레이닝 또는 재 트레이닝한다. 그런 다음 모델은 사용(예를 들어, 온-디바이스 추론)을 위해 사용자 디바이스로 전송된다.More specifically, FIG. 3 shows three different training data flows that may in some cases be used in a complementary manner. In a first data flow shown mainly in dashed lines at the bottom of FIG. 3 , training data is generated at the user device. After the training data is uploaded to a central authority, the machine learning model is trained or retrained based on the uploaded data. The model is then sent to the user device for use (eg, on-device inference).

개인화 또는 개인화된 학습으로 지칭될 수 있는 제2 데이터 흐름에서, 사용자 디바이스상에서 생성된 트레이닝 데이터는 디바이스상에서 모델을 트레이닝 또는 재 트레이닝하는데 사용된다. 그런 다음 재 트레이닝된 모델은 그런 디바이스에 의해 사용된다. 이 개인화된 학습은 디바이스 별 모델을 중앙 집중식 데이터 수집없이 트레이닝하고 평가할 수 있으므로, 데이터 보안 및 사용자 프라이버시가 향상된다. In a second data flow, which may be referred to as personalization or personalized learning, training data generated on the user device is used to train or retrain the model on the device. The retrained model is then used by such devices. This personalized learning allows device-specific models to be trained and evaluated without centralized data collection, improving data security and user privacy.

연합 학습으로 지칭될 수 있는 제3 데이터 흐름에서, 사용자 디바이스상에서 생성된 트레이닝 데이터는 디바이스상에서 모델을 트레이닝 또는 재 트레이닝하는데 사용된다. 따라서, 실제 사용자 별 트레이닝 데이터는 클라우드로 업로드되지 않으므로 데이터 보안 및 사용자 프라이버시가 향상된다. In a third data flow, which may be referred to as federated learning, training data generated on the user device is used to train or retrain the model on the device. Therefore, since the actual user-specific training data is not uploaded to the cloud, data security and user privacy are improved.

이러한 온-디바이스 학습 후, 사용자 디바이스는 중앙 기관으로 업데이트를 제공할 수 있다. 예를 들어, 업데이트는 재 트레이닝된 모델의 하나 이상의 파라미터 또는 그 모델의 재 트레이닝 동안 발생된 모델의 파라미터에 대한 하나 이상의 변경을 기술할 수 있다.After this on-device learning, the user device can provide an update to the central authority. For example, an update may describe one or more parameters of the retrained model or one or more changes to parameters of the model that occurred during retraining of that model.

중앙 기관은 다수의 디바이스로부터 이러한 많은 업데이트를 수신할 수 있고, 그 업데이트들을 집계하여 업데이트된 글로벌 모델을 생성할 수 있다. 그런 다음 업데이트된 글로벌 모델은 사용자 디바이스로 재 전송될 수 있다. 이 방식은 중앙 집중식 데이터 수집없이 교차 디바이스 모델이 트레이닝되고 평가될 수 있게 할 수 있다.A central authority may receive many of these updates from multiple devices, and aggregate the updates to create an updated global model. The updated global model can then be sent back to the user device. This approach may allow cross-device models to be trained and evaluated without centralized data collection.

도 4는 본 개시의 예시적인 실시예에 따른 예시적인 온-디바이스 기계 학습 플랫폼의 블록도를 도시한다. 도 4를 참조하여 예시되고 기술되는 플랫폼은 하나의 예시적인 구현으로서만 제공된다. 본 명세서에 기술된 온-디바이스 기계 학습 플랫폼의 많은 다른 구현이 가능하다. 예시적인 온-디바이스 기계 학습 플랫폼은 메인 프로세스(402) 및 백그라운드 프로세스(404)를 포함하거나 구현할 수 있다.4 depicts a block diagram of an exemplary on-device machine learning platform in accordance with an exemplary embodiment of the present disclosure. The platform illustrated and described with reference to FIG. 4 is provided as one example implementation only. Many other implementations of the on-device machine learning platform described herein are possible. The exemplary on-device machine learning platform may include or implement a main process 402 and a background process 404 .

메인 프로세스(402)는 모든 API 요청을 처리할 수 있다. 메인 프로세스(402)는 수집 API(410)를 통해 트레이닝 예제 수집 서비스를 제공하는 수집 API 서비스(420)와; 예측 API(412)를 통해 추론 생성 서비스를 제공하는 예측 API 서비스(422)와, 트레이닝 API(414)를 통해 모델 트레이닝 서비스를 제공하는 트레이닝 API 서비스(424)를 포함한다.The main process 402 can handle all API requests. The main process 402 includes a collection API service 420 that provides a training example collection service through the collection API 410; It includes a prediction API service 422 that provides an inference generation service through the prediction API 412 and a training API service 424 that provides a model training service through the training API 414 .

일부 구현에서, 수집 API 서비스(420)는 자동 보존 정책으로 트레이닝 예제를 유지할 수 있다. 일부 구현에서, 트레이닝 API 서비스(424)는 예제 컬렉션으로부터 데이터를 끌어와(drawing) 비가시적인 프로세스로서 스케줄된 시간 및 조건에서 트레이닝 세션들을 자동으로 실행할 수 있다. 일부 구현에서, 예측 API 서비스(422)는 트레이너 또는 외부 소스들로부터 발생할 수 있는 주어진 모델에 기초하여 클라이언트들이 추론을 실행할 수 있게 할 수 있다.In some implementations, the aggregation API service 420 may maintain training examples with an automatic retention policy. In some implementations, the training API service 424 may draw data from the example collection and automatically execute training sessions at scheduled times and conditions as an invisible process. In some implementations, the prediction API service 422 may enable clients to execute inferences based on a given model, which may originate from a trainer or external sources.

일부 구현에서, 백그라운드 프로세스(404)는 트레이닝 및 다른 주기적 유지 보수 태스크만을 호스팅할 수 있다. 이것은 트랜젝션적이며 분해되도록 설계될 수 있다. 일부 구현에서, 백그라운드 프로세스(404)는 단독으로 메인 프로세스(402)로부터 그 상태를 획득한다.In some implementations, the background process 404 may only host training and other periodic maintenance tasks. It is transactional and can be designed to be decomposed. In some implementations, the background process 404 obtains its state solely from the main process 402 .

아래에서 더 논의되는 바와 같이, 컨텍스트 제공자(430)는 수집 API 서비스(420) 및 예측 API 서비스(422) 모두에 대해 컨텍스트 정보를 예제들에 삽입한다. 저장 컴포넌트(440)는 (예를 들어, 중앙 집중식 예제 데이터베이스(124)에) 부기 상태(bookkeeping state)뿐만 아니라 예제들의 저장을 가능하게 하고 수행할 수 있다. 이는 LevelDB에 기초할 수 있다. As discussed further below, the context provider 430 inserts context information into the examples for both the ingest API service 420 and the prediction API service 422 . Storage component 440 may enable and perform storage of examples as well as bookkeeping state (eg, in centralized examples database 124 ). It can be based on LevelDB.

예측 계획 유형에 따라, 예측 API 서비스(422)에 의해 다수의 예측 엔진(432)이 액세스될 수 있다. 모델 파라미터들뿐만 아니라 예측 및 트레이닝 계획이 아티팩트 관리자(434)에 의해 제공되거나 관리된다. 아티팩트 관리자(434)는 클라우드 서버(210), 애플리케이션 자산(assets) 및/또는 파일로부터 아티팩트 검색을 지원할 수 있다. 또한 예를 들어 예측자 또는 다른 트레이너에 의해 사용되는 트레이닝 결과를 저장하기 위한 변경 가능한 아티팩트를 지원할 수 있다.Depending on the prediction plan type, multiple prediction engines 432 may be accessed by the prediction API service 422 . Model parameters as well as prediction and training plan are provided or managed by artifact manager 434 . Artifact manager 434 may support retrieving artifacts from cloud server 210 , application assets, and/or files. It can also support mutable artifacts, for example to store training results used by predictors or other trainers.

백그라운드 프로세스(404)는 트레이닝 계획에 기초하여 선택된 다수의 트레이닝 엔진(406)을 호스팅할 수 있다. 연합 학습에 대해, 백그라운드 프로세스(404)는 연합 학습 서버와 통신하여, 프라이버시 보호 기술(예를 들어, 보안 집계)을 사용하여 누적된 트레이닝 결과를 업로드할 수 있다.The background process 404 may host a number of training engines 406 selected based on the training plan. For federated learning, the background process 404 may communicate with the federated learning server to upload accumulated training results using privacy protection techniques (eg, secure aggregation).

로그 관리자(444)는 기계 학습 메트릭에 대한 상세한 분석을 위해 기계 학습 모델에 관한 로그를 클라우드 서버(210)에 업로드할 수 있다.The log manager 444 may upload a log related to the machine learning model to the cloud server 210 for detailed analysis of the machine learning metric.

보다 구체적으로, 일부 구현에서, 수집 API 서비스(420)는 백그라운드 프로세스(404)에 의한 차후 검색을 위해(예를 들어, 백그라운드 트레이닝을 수행하기 위해) 중앙 집중식 예제 데이터베이스(124)에 트레이닝 예제의 저장을 허용, 관리 및/또는 수행하는 설비일 수 있다. 예를 들어, 수집 API 서비스(420)는 저장 컴포넌트(440)와 상호 작용하여 중앙 집중식 예제 데이터베이스(124)에 트레이닝 예제들의 저장을 관리할 수 있다.More specifically, in some implementations, the ingestion API service 420 stores training examples in a centralized example database 124 for later retrieval by the background process 404 (eg, to perform background training). may be a facility that permits, manages and/or performs For example, aggregation API service 420 may interact with storage component 440 to manage storage of training examples in centralized examples database 124 .

수집 API(410)는 간단할 수 있다. 일단 클라이언트가 인증되면, 아래 예제코드에서 설명된 것처럼 객체에 액세스할 수 있다(여기서 Task는 비동기 API 호출을 나타내는 접근 방법이고, Task <Void>는 무시되거나 오류 관찰을 위해 청취될 수 있다).The collection API 410 may be simple. Once the client is authenticated, it can access the object as described in the example code below (where Task is an access method representing an asynchronous API call, and Task <Void> can be ignored or listened for error observation).

Figure 112019123668897-pct00001
Figure 112019123668897-pct00001

Learning.getCollectionClient(options)는 exampleCollection에 대한 액세스 및 구성을 허용할 수 있다. '옵션' 파라미터는 적어도 컬렉션 이름을 포함할 수 있다. 추가 옵션이 제공되지 않으면, 디폴트 또는 이전에 구성된 옵션이 사용될 수 있다. 예시적인 옵션은 데이터베이스(124)에 저장되기 전에 학습 이벤트에 삽입되어야 하는 컨텐츠 및 컨텍스트의 유효 기간을 포함한다.Learning.getCollectionClient(options) can allow access and configuration of exampleCollection. The 'option' parameter may include at least a collection name. If no additional options are provided, the default or previously configured options may be used. Exemplary options include the validity period of the content and context that must be inserted into the learning event before being stored in the database 124 .

CollectionClient.add(example)는 저장소에 새로운 예제를 추가할 수 있다.CollectionClient.add(example) can add a new example to the repository.

CollectionClient.clear()는 컬렉션의 컨텐츠의 재설정을 허용할 수 있다.CollectionClient.clear() may allow resetting of the contents of a collection.

트레이닝 API(414) 및 대응하는 트레이닝 API 서비스(424)는 백그라운드 프로세스(404)를 스케줄링하여 트레이닝을 수행할 수 있다. 백그라운드 프로세스(404)는 하나 이상의 트레이닝 엔진(406)을 구현하거나 그와 상호 작용하여, 예제 컬렉션으로부터 데이터를 가져와 트레이닝 계획을 실행할 수 있다. 계획은 그래프 자체를 또한 임베딩하는 그래프(예를 들어, 텐서 플로우 그래프)에서 수행하기 위한 동작 시퀀스에 대한 선언적 설명일 수 있다. 계획은 트레이닝 데이터에 대한 컬렉션을 조회하는 방법, 그것을 그래프에 피드하하는 방법 및/또는 출력을 생성 및 전달하는 방법을 기술할 수 있다.Training API 414 and corresponding training API service 424 may schedule background process 404 to perform training. The background process 404 may implement or interact with one or more training engines 406 to pull data from the example collection and execute a training plan. A plan may be a declarative description of a sequence of operations to perform on a graph (eg, a tensorflow graph) that also embeds the graph itself. A plan may describe how to query a collection for training data, how to feed it to a graph, and/or how to generate and deliver output.

각 트레이닝 계획 유형은 트레이닝 계획 엔진(406)과 관련될 수 있다. 따라서 온-디바이스 기계 학습 플랫폼은 새로운 유형의 계획에 의해 확장될 수 있으므로 백그라운드 트레이닝의 일반적인 모델에 맞는 임의의 종류의 기계 학습 실행을 나타낼 수 있다.Each training plan type may be associated with a training plan engine 406 . Thus, an on-device machine learning platform can be extended by new types of schemes, thus representing any kind of machine learning execution that fits the general model of background training.

일 예로서, 트레이너에 대한 예시적인 API가 아래에 제공된다.As an example, an example API for a trainer is provided below.

Figure 112019123668897-pct00002
Figure 112019123668897-pct00002

Learning.getTrainerClient(options)는 적어도 트레이너 세션 이름을 포함하는 옵션을 취할 수 있고, 트레이닝 세션을 생성 또는 재구성할 수 있다. 세션 이름은 패키지 이름과 유사하게 애플리케이션에서 선택한 상수일 수 있으며 세션 자체는 영구적일 수 있다. 옵션은 계획 유형, 계획의 획득 방법 및 계획 유형에 특정된 파라미터를 지정할 수도 있다. 계획은 계획 유형에 따라 다른 방식으로 얻을 수 있다. 예를 들어, 연합의 경우, 계획은 연합 학습 서버에서 다운로드될 수 있고, 개인화의 경우, 자산에 포함되거나 클라우드 서버(210)로부터 다운로드될 수 있다.Learning.getTrainerClient(options) may take an option containing at least the trainer session name, and may create or reconfigure the training session. The session name can be an application-chosen constant, similar to the package name, and the session itself can be persistent. Options may specify the plan type, how the plan is obtained, and parameters specific to the plan type. Plans can be obtained in different ways depending on the plan type. For example, in the case of federation, the plan may be downloaded from the federated learning server, and in the case of personalization, it may be included in the asset or downloaded from the cloud server 210 .

TrainerClient.start(스케줄)는 인터페이스 생성 시간에서 및 주어진 스케줄로 전달된 옵션에 기초하여 트레이닝 세션을 시작할 수 있다. 스케줄은 지속적이거나 일 회일 수 있다. 일부 구현에서, 두 경우 모두에서, 트레이닝은 디바이스 조건이 허용하는 경우에만 스케줄링된다. 예를 들어, 일부 구현에서, 트레이닝은 디바이스가 유휴 상태이거나 충전 중일 경우에만 스케줄링되거나 수행될 것이다.TrainerClient.start(schedule) may start a training session at interface creation time and based on options passed to a given schedule. The schedule may be continuous or one-time. In some implementations, in both cases, training is scheduled only if device conditions permit. For example, in some implementations, training will be scheduled or performed only when the device is idle or charging.

TrainerClient.stop()은 트레이닝 세션의 취소 및/또는 제거를 허용할 수 있다.TrainerClient.stop() may allow cancellation and/or removal of training sessions.

예측 API(412)는 클라이언트가 트레이닝된 모델에 기초하여 입력을 공급하고 그로부터 예측을 도출할 수 있게 한다. 트레이너와 마찬가지로, 예측자는 일부 구현에서, 계획-중심적(plan-driven)일 수 있으며, 그 계획은 그래프에서 수행할 동작들 및 입력을 획득하여 출력을 생성하는 방법에 대한 선언적 설명이다. Prediction API 412 allows clients to supply inputs based on a trained model and derive predictions therefrom. Like trainers, predictors can, in some implementations, be plan-driven. The plan is a declarative description of the operations to be performed on the graph and how to obtain an input and produce an output.

일 예로서, 예시적인 예측 API 코드는 다음과 같다.As an example, exemplary prediction API code is as follows.

Figure 112019123668897-pct00003
Figure 112019123668897-pct00003

Learning.getPredictorClient()는 주어진 옵션에 기초하여 예측자를 리턴할 수 있다. 옵션들은 예측을 위한 계획 및 모델 파라미터를 획득하는 방법을 지정할 수 있다. 또한 옵션들은 예측 엔진으로 전달되기 전에 후보 예제들에 자동으로 삽입되어야 하는 컨텍스트 특징을 지정할 수도 있다.Learning.getPredictorClient() can return a predictor based on the given options. Options may specify how to obtain plan and model parameters for prediction. Options may also specify context characteristics that should be automatically inserted into candidate examples before being passed to the prediction engine.

predictRank()는 주어진 컨텍스트 예제 및 지정된 후보로부터 도출된 랭킹 문제에 대한 예측을 리턴할 수 있다. 시간이 지남에 따라 추가 애플리케이션- 지정 예측 방법이 도입될 수 있다.predictRank() may return a prediction for a ranking problem derived from a given context example and a specified candidate. Over time, additional application-specific prediction methods may be introduced.

아래의 코드는 도 4를 참조하여 설명된 3개의 예시적인 API(410, 412 및 414)의 사용 예를 도시한다.The code below shows an example of use of the three exemplary APIs 410 , 412 and 414 described with reference to FIG. 4 .

먼저, 구성용 옵션들이 정의될 수 있다. 일반적으로 이들 옵션은 애플리케이션에 의해 표현형 구성 컴포넌트(442)로부터 얻을 수 있지만 단순화를 위해 정적 상수로 정의될 수 있다.First, configuration options may be defined. Typically these options may be obtained from the expression construct component 442 by the application, but may be defined as static constants for simplicity.

Figure 112019123668897-pct00004
Figure 112019123668897-pct00004

Figure 112019123668897-pct00005
Figure 112019123668897-pct00005

모델 파라미터뿐만 아니라 트레이닝 계획 및 예측 계획을 기술하는 아티팩트를 참조하기 위해 URI가 사용될 수 있는 방법에 주목한다. 계획들은 그래프(예를 들어, 텐서 플로우 그래프) 및 그 그래프를 실행하는 방법에 대한 정보를 인코딩할 수 있다. 일부 구현에서, 계획들은 대응하는 툴박스에 포함된 툴(예를 들어, 파이썬(Python) 툴)에 의해 생성될 수 있다. 일부 구현에서, 모델 파라미터들은 계획과 관련된 가중치들의 불투과성 표현일 수 있다. URI는 "모델 저장소"(mrepo:)를 참조할 수 있으며, 이는 (예를 들어, 클라우드 서버(210)로부터) 디바이스로 다운로드됨을 의미하지만 로컬로 캐신된 파일(file:)을 나타낼 수도 있다. 예를 들어, 아티팩트 관리자(134)는 서버(210) 및/또는 다른 모델 관리 태스크으로부터 모델 아티팩트의 다운로드를 관리할 수 있다.Note how URIs can be used to refer to artifacts that describe model parameters as well as training plans and prediction plans. Plans may encode information about a graph (eg, a tensorflow graph) and how to execute the graph. In some implementations, the plans may be generated by a tool included in a corresponding toolbox (eg, a Python tool). In some implementations, the model parameters may be an opaque representation of weights associated with the plan. The URI may refer to "model repository" (mrepo:), which means it is downloaded to the device (eg, from cloud server 210), but may also refer to a locally cached file (file:). For example, the artifact manager 134 may manage the download of model artifacts from the server 210 and/or other model management tasks.

파일 아티팩트의 경우, API간에 종속성이 정의될 수 있다. 예를 들어, TrainerOptions이 예측 API 서비스에 의해 사용되는 트레이닝된 파라미터로 파일 아티팩트를 생성하도록 정의될 수 있다. 온-디바이스 기계 학습 플랫폼은 필요한 입력이 아직 생성되지 않은 경우 동작들을 지연시키거나 적절한 오류 코드로 거부함으로써 입력-출력 의존성을 내부적으로 처리할 수 있다.For file artifacts, dependencies can be defined between APIs. For example, TrainerOptions may be defined to generate file artifacts with trained parameters used by the prediction API service. On-device machine learning platforms can handle input-output dependencies internally by deferring actions or rejecting them with an appropriate error code if the required input has not yet been generated.

위의 구성을 제공함으로써, 플랫폼은 트레이닝 예제가 지속적으로 컬렉션으로 공급되는 일부 API 코드를 포함할 수 있다. 예를 들어, 다음 코드에는 추가(add) 트레이닝 예제가 포함될 수 있다.By providing the above configuration, the platform can include some API code where training examples are continuously fed as a collection. For example, the following code could include an add training example.

Figure 112019123668897-pct00006
Figure 112019123668897-pct00006

예제가 캐시에 추가될 때마다, COLLECTION_OPTIONS으로 지정된 컨텍스트가 특징으로서 추가될 수 있다. 사용자는 제공된 옵션에 기초하여 처리할 수 있는 추가 데이터의 사이즈나 수명을 제한할 필요가 없다.Whenever an example is added to the cache, the context specified by COLLECTION_OPTIONS may be added as a feature. Users do not need to limit the size or lifetime of additional data they can process based on the options provided.

트레이닝을 스케줄링하기 위해, 애플리케이션은 일반적으로 생성 시점에서 현재 옵션을 사용하여 백그라운드 트레이닝이 구성되고 스케줄링되도록 보장할 수 있다. 일부 구현에서, 트레이닝이 이미 스케줄링되어 있고 구성이 변경되지 않으면, 다음 예제 호출의 영향을 받지 않는다.To schedule training, an application can ensure that background training is configured and scheduled, typically using the current options at the time of creation. In some implementations, if training is already scheduled and the configuration is not changed, the next example call is not affected.

Figure 112019123668897-pct00007
Figure 112019123668897-pct00007

마지막으로, 예제 코드의 다른 부분은 예측 API를 이용하여 트레이닝 결과를 활용할 수 있다. 일 예로서, 이것은 아래 예제 코드에 제공된 것처럼 보일 수 있다.Finally, other parts of the example code can utilize the training results using the prediction API. As an example, this can be seen as provided in the example code below.

Figure 112019123668897-pct00008
Figure 112019123668897-pct00008

Figure 112019123668897-pct00009
Figure 112019123668897-pct00009

이미 언급한 바와 같이, 일부 구현에서, 온-디바이스 기계 학습 플랫폼의 컨텍스트 제공자(430)는 컨텍스트 특징을 학습 이벤트에 삽입할 수 있다. 이는 서비스 측에서 발생할 수 있으므로 애플리케이션에서 컨텍스트를 직접 사용할 필요가 없다.As already mentioned, in some implementations, the context provider 430 of the on-device machine learning platform may insert the context feature into the learning event. This can happen on the service side, so there is no need to use the context directly in the application.

컨텍스트가 삽입될 수 있는 두 가지 예시적인 시점은 다음과 같다.Two exemplary points in time at which context can be inserted are:

1. 예시 컬렉션에 예시가 저장되기 전. 삽입된 컨텍스트는 CollectionOptions에 의해 지정될 수 있다.1. Before the example is saved in the example collection. The inserted context can be specified by CollectionOptions.

2. 예측 엔진으로 예시가 전달되기 전. 삽입된 컨텍스트는 PredictorOptions에 의해 지정될 수 있다.2. Before the example is passed to the prediction engine. The inserted context can be specified by PredictorOptions.

일반적으로, 각각의 컨텍스트 카테고리는 그 예시(예를 들어, 텐서 플로우 예시 프로토(proto))에 추가된 잘 알려진 이름 및 잘 알려진 유형을 갖는 특징 세트를 지정할 수 있다. 주어진 컨텍스트 특징에 대해 삽입된 값은 삽입 시점에서 시스템으로부터 요청되거나, 플랫폼의 내부 컨텍스트 제공자(430)가 주기적으로 업데이트하는 캐신된 값일 수 있다.In general, each context category may specify a set of features with well-known names and well-known types appended to their instances (eg, TensorFlow example protos). The inserted value for a given context characteristic may be either requested from the system at the time of insertion, or it may be a cached value that is periodically updated by the platform's internal context provider 430 .

컨텍스트 특징의 예는 오디오 상태; 일(day) 속성; 캘린더; 검출 활동; 사용자-지정 장소(예를 들어, "집" 대 "직장"); 네트워크 상태; 전원 연결; 화면 특징; 사용자 위치; 사용자 위치 예측; WiFi 스캔 정보; 날씨, 또는 기타 컨텍스트 특징을 포함한다. Examples of context characteristics include audio state; day attribute; calender; detection activity; user-specified place (eg, "home" versus "work"); network status; power connection; screen features; user location; user location prediction; WiFi scan information; weather, or other contextual characteristics.

중요하게, 본 명세서에 기술된 트레이닝 예제 및 컨텍스트 특징은 트레이닝 예제와 함께 저장될 수 있거나 온-디바이스 플랫폼에 의한 추론을 제공하기 위해 사용될 수 있는 예제 데이터를 도시하기 위해 간단히 제공된다. 그러나, 사용자가 어떤 데이터를 수집하고 그러한 데이터가 어떻게 사용되는지에 대한 정보를 획득한 후에 사용자가 동의하지 않으면 이러한 데이터는 수집, 사용 또는 분석되지 않다. 또한, 권한 범위를 취소하거나 수정하기 위한 툴이 사용자에게 제공될 수 있다. 또한, 특정 정보 또는 데이터는 개인 식별 정보가 암호화된 방식으로 제거 또는 저장되도록 저장 또는 사용되기 전에 여러 가지 방식으로 처리될 수 있다.Importantly, the training examples and context features described herein are provided simply to illustrate example data that may be stored with the training examples or used to provide inference by an on-device platform. However, if the user does not consent after obtaining information about what data the user collects and how such data is used, such data will not be collected, used or analyzed. In addition, a tool may be provided to the user to revoke or modify the privilege set. In addition, certain information or data may be processed in a number of ways prior to being stored or used so that personally identifiable information is removed or stored in an encrypted manner.

온-디바이스 플랫폼은 임의의 컨텍스트 자체를 필요로 하지 않으므로, 컨텍스트 제공자(430)는 클라이언트 애플리케이션에 대한 컨텍스트를 수집한다. 예를 들어 클라이언트 애플리케이션은 그의 기계 학습 모델에 대한 기능으로서 "위치"가 필요할 수 있다. 이러한 애플리케이션은 "위치" 컨텍스트가 필요함을 온-디바이스 위치 플랫폼에 명시적으로 알릴 수 있다.Since the on-device platform does not require any context itself, the context provider 430 collects the context for the client application. For example, a client application may need a "location" as a function for its machine learning model. Such an application can explicitly inform the on-device location platform that it needs a "location" context.

온-디바이스 플랫폼은 먼저 클라이언트 애플리케이션이 디바이스 위치에 액세스할 수 있는 권한을 갖는지 여부를 확인할 수 있다. 그렇지 않은 경우, 플랫폼은 클라이언트로 컨텍스트를 제공하지 않는다. 반면에, 애플리케이션이 권한을 갖는 경우, 그것이 플랫폼에 트레이닝 전송하면 그 클라이언트에 대한 위치 컨텍스트가 채워질 것이다. 따라서, 일부 구현에서, 클라이언트가 온-디바이스 플랫폼에 예를 전송하는 각각의 인스턴스에서, 플랫폼은 그들의 권한을 검사하여 클라이언트가 그들이 주장하는 컨텍스트에 액세스할 수 있는 권한을 가지고 있는지 여부를 결정한다.The on-device platform may first check whether the client application has permission to access the device location. Otherwise, the platform does not provide a context to the client. On the other hand, if the application has permission, the location context for that client will be populated when it sends training to the platform. Thus, in some implementations, in each instance the client sends a yes to the on-device platform, the platform checks their permissions to determine whether the client has permission to access the context in which they assert.

일부 구현에서, 실제 콘텍스트 컨텐츠는 애플리케이션에 제공되지 않는다는 것에 주목한다. 대신에, 컨텍스트는 단순히 클라이언트에 대한 트레이닝 예제로 채워진다. 트레이닝 예제들은 온-디바이스 플랫폼 데이터베이스 내에 유지되므로 클라이언트는 실제 컨텍스트 컨텐츠에 액세스할 수 없다.Note that, in some implementations, no actual contextual content is provided to the application. Instead, the context is simply populated with training examples for the client. The training examples are maintained within the on-device platform database, so the client has no access to the actual context content.

일부 구현에서, 특정 유형의 컨텍스트는 유사 장소 별명 및 캘린더에 액세스하기 위해 사용자 계정을 필요로 한다. 일부 구현에서, 컨텍스트 제공자(430) 자체는 컨텍스트를 위해 어떤 계정을 사용할지를 나타내지 않는다. 이러한 경우, 클라이언트 애플리케이션은 계정을 지정해야 한다. 일부 구현에서, 계정이 클라이언트에 의해 지정되지 않으면, 계정이 필요없는 컨텍스트만 클라이언트에 제공될 것이다. In some implementations, certain types of contexts require user accounts to access similar place aliases and calendars. In some implementations, the context provider 430 itself does not indicate which account to use for the context. In this case, the client application must specify an account. In some implementations, if no account is specified by the client, only the context that does not require an account will be provided to the client.

온-디바이스 플랫폼이 사용하는 컨텍스트는 일반적으로 컨텍스트 관리자(예를 들어, 도 1에 도시된 바와 같이 126)에 의해 제공된다. 컨텍스트 관리자는 예를 들어 플랫폼, 그 플랫폼을 포함하는 애플리케이션 및/또는 디바이스의 운영 체제를 포함하여 여러 장소에 위치할 수 있다. 일부 구현에서, 성능을 개선하기 위해, 컨텍스트 제공자(430)는 컨텍스트 관리자에 리스너를 등록하여 항상 최신 컨텍스트 업데이트를 온-디바이스 플랫폼 메모리에 유지시킬 수 있다.The context used by the on-device platform is typically provided by a context manager (eg, 126 as shown in FIG. 1 ). The context manager may be located in multiple places, including, for example, the platform, the applications comprising the platform, and/or the operating system of the device. In some implementations, to improve performance, the context provider 430 may register a listener with the context manager to always keep the latest context updates in on-device platform memory.

일부 구현에서, 온-디바이스 플랫폼은 부실 컨텍스트 만료를 수행하거나 포함할 수 있다. 일부 구현에서, 사용자들이 디바이스에서 컨텍스트 신호를 턴오프하면(예를 들어, 위치 또는 활동 인식을 턴오프하면), 컨텍스트 관리자는 컨텍스트가 턴오프되었다는 것을 온-디바이스 플랫폼에 알리지 않는다. 대신에, 컨텍스트 관리자는 단순히 이들 컨텍스트(들)에 대한 업데이트를 온-디바이스 플랫폼에 전송하는 것을 중지한다. 따라서, 향후 이벤트에 부실 컨텍스트를 사용하지 않기 위해, 플랫폼은 부실 컨텍스트가 만료되게 할 수 있다. 특히, 콘텍스트 속성에 기초하여, 각 콘텍스트 특징 또는 콘텍스트 유형에 대해 상이한 만료 시간 기간이 정의될 수 있다. 컨텍스트가 만료 시간 기간에 도달하면 삭제될 수 있다.In some implementations, the on-device platform may perform or include stale context expiration. In some implementations, when users turn off a context signal on the device (eg, turn off location or activity recognition), the context manager does not inform the on-device platform that the context has been turned off. Instead, the context manager simply stops sending updates for these context(s) to the on-device platform. Thus, in order not to use the stale context for future events, the platform may cause the stale context to expire. In particular, based on context attributes, different expiry time periods may be defined for each context characteristic or context type. When a context reaches an expiration time period, it can be deleted.

다른 예시적인 컨텍스트 특징은 장소 별칭 컨텍스트 특징을 포함한다. 특히, 사용자가 집에 있는지 또는 직장에 있는지 여부는 많은 클라이언트 애플리케이션에서 중요한 기능이다. 사용자의 집/직장 장소가 자주 변경되지 않는다는 것을 고려하면, 플랫폼은 컨텍스트 제공자(430)가 구성되면 현재 집/직장 별칭을 요청할 수 있다. 사용자가 그러한 정보의 사용에 동의한 경우, 사용자의 집/직장 장소는 캐싱될 수 있고, 컨텍스트 제공자(430)는 위치 컨텍스트를 사용하여, 그 위치 컨텍스트를 캐싱된 위치와 비교함으로써 사용자가 집에 있는지 또는 직장에 있는지를 결정할 수 있다. 일부 구현에서, 장소 별칭 정보는 컨텍스트 관리자 또는 장소 API로부터 수신될 수 있다.Another example context feature includes a place alias context feature. In particular, whether the user is at home or at work is an important feature in many client applications. Considering that the user's home/work location does not change frequently, the platform may request the current home/work alias once the context provider 430 is configured. If the user has consented to the use of such information, the user's home/work location may be cached and the context provider 430 may use the location context to determine if the user is at home by comparing that location context to the cached location. Or you can decide whether you are at work. In some implementations, the venue alias information may be received from a context manager or a venue API.

컨텍스트 관리자는 적어도 다음 두 가지 방식으로 컨텍스트를 전달할 수 있다. 첫 번째 예에서 온-디바이스 플랫폼은 리스너로 등록할 수 있다. 이 경우, 온-디바이스 플랫폼은 업데이트된 컨텍스트의 캐시를 유지할 수 있으며, 이는 일부 구현에서 온-디바이스 플랫폼이 올웨이즈-온(always-on service) 서비스임을 의미한다. 리스너를 사용하면 업데이트된 데이터를 캐시에 보관할 수 있다.A context manager can pass a context in at least two ways: In the first example, the on-device platform can register as a listener. In this case, the on-device platform may maintain a cache of updated contexts, which in some implementations means that the on-device platform is an always-on service. Listeners allow you to cache updated data.

리스너로 등록하면 다음과 같은 이점이 있다.Registering as a listener has the following advantages:

1. 낮은 대기 시간(latency). 모든 컨텍스트는 온-디바이스 플랫폼 내에 캐시되며, 기계 학습에 적합한 포멧으로 변환된다.1. Low latency. All contexts are cached within the on-device platform and translated into a format suitable for machine learning.

2. 온-디바이스 플랫폼으로의 IPC(Inter Process Call)가 고속인 경우, 캐싱 컨텍스트는 배터리를 절약한다.2. If the Inter Process Call (IPC) to the on-device platform is high-speed, the caching context saves battery.

두 번째 예에서, 온-디바이스 플랫폼은 현재 컨텍스트를 원 샷으로 얻을 수 있다. 이 경우 컨텍스트 관리자는 다른 API를 제공하여, 모든 현재 컨텍스트를 원 샷으로 가져올 수 있다. 이 API가 사용되는 경우, 온-디바이스 플랫폼은 일반적으로 컨텍스트의 캐시를 유지하지 않고 요청시 현재 컨텍스트를 가져온다.In the second example, the on-device platform can obtain the current context in one shot. In this case, the context manager can provide another API to get all the current contexts in one shot. When this API is used, the on-device platform generally does not maintain a cache of contexts, but fetches the current context on request.

이 모드에서, 컨텍스트 관리자는 플랫폼에 대해 업데이트된 컨텍스트를 유지하도록 요청되므로, 플랫폼은 일반적으로 제1 옵션에는 필요하지 않은 추가 UDC 권한을 획득한다.In this mode, the context manager is asked to maintain an updated context for the platform, so the platform acquires additional UDC privileges that are not normally required for the first option.

원샷 모드의 이점은, 온-디바이스 플랫폼으로의 IPC가 저속인 경우, 배터리를 절약할 수 있다는 것을 포함한다.Advantages of one-shot mode include saving battery when IPC to the on-device platform is slow.

일부 구현에서, 온-디바이스 플랫폼은 위에서 리스트된 모든 컨텍스트에 대한 사용자 권한을 획득할 수 있지만, 특정 클라이언트들은 온-디바이스 플랫폼과 동일한 권한을 갖지 않을 수 있다. 따라서 플랫폼은 클라이언트에 대한 권한을 제어할 수 있다. 일부 구현에서, 이것은 클라이언트 애플리케이션과 관련된 권한을 추출하기 위해 패키지 관리자를 사용하여 수행될 수 있다. 플랫폼은 권한에 대해 컨텍스트들 간의 매핑을 유지할 수 있다. 따라서, 클라이언트는 일반적으로 온-디바이스 플랫폼에 자신을 등록할 때 사용하려는 컨텍스트를 명시적으로 요구한다. 플랫폼은 클라이언트가 요청된 컨텍스트에 액세스할 권한을 갖는지 여부를 체크한다. 애플리케이션이 권한을 갖는 컨텍스트만 해당 모델을 트레이닝하고 추론하는 데 사용된다.In some implementations, the on-device platform may acquire user rights for all contexts listed above, but certain clients may not have the same rights as the on-device platform. Thus, the platform can control the permissions on the client. In some implementations, this can be done using a package manager to extract the permissions associated with the client application. The platform may maintain a mapping between contexts to rights. Thus, clients typically explicitly request the context they want to use when registering themselves with the on-device platform. The platform checks whether the client has permission to access the requested context. Only the context in which the application has privileges is used to train and infer that model.

또한, 클라이언트의 권한은 즉시 변경될 수 있다. 예를 들어, 사용자는 애플리케이션이 유용하다고 느낄 때 자신의 위치를 사용하도록 애플리케이션을 승인한 다음 권한을 취소할 수 있다. 이 경우를 처리하기 위해, 클라이언트로부터 새로운 이벤트가 올 때마다 플랫폼은 그들의 기존 권한을 체크하고 트레이닝할 이벤트와 해당하는 컨텍스트를 포함할 수 있다.In addition, the rights of the client can be changed immediately. For example, a user can authorize an application to use their location when the application finds it useful, and then revoke the permission. To handle this case, whenever a new event comes from a client, the platform may check their existing privileges and include the event to be trained on and the corresponding context.

추론 동안, 플랫폼은 또한 예측을 위한 컨텍스트 특징의 사용을 허용하기 위해 현재 클라이언트 권한을 분석할 수 있다. 이와 같이, 일부 구현에서, 기계-학습된 모델은 트레이닝 및 추론을 위한 누락된 특징을 수용할 수 있다.During inference, the platform may also analyze current client privileges to allow use of contextual features for prediction. As such, in some implementations, machine-learned models may accommodate missing features for training and inference.

다른 양태에 따르면, 일부 구현에서, 온-디바이스 플랫폼 API를 사용하기 위해, 클라이언트들은 그들의 애플리케이션에 API 키를 추가할 수 있다. 예를 들어 애플리케이션은 클라이언트가 개인 키를 보유하는 디지털 인증서로 서명될 수 있다. 애플리케이션은 API를 관리하는 중앙 기관에 등록함으로써 키를 획득할 수 있다.According to another aspect, in some implementations, to use the on-device platform API, clients may add an API key to their application. For example, an application can be signed with a digital certificate in which the client holds a private key. An application can obtain a key by registering with the central authority that manages the API.

하나의 예시적인 인증 절차는 다음을 포함할 수 있다 :One example authentication procedure may include:

1. 온-디바이스 플랫폼은 클라이언트가 온-디바이스 플랫폼에 등록할 때 패키지 이름 및 API 키 쌍을 얻는다. 온 디바이스 플랫폼은 패키지 이름과 API 키 쌍을 검증을 위해 중앙 기관으로 송신한다.1. The on-device platform obtains the package name and API key pair when the client registers with the on-device platform. The on-device platform sends the package name and API key pair to a central authority for verification.

2. 클라이언트가 검증되면, 온-디바이스 플랫폼은 클라이언트가 그 디바이스상에서 사용할 플랫폼 키를 생성할 것이다.2. Once the client is verified, the on-device platform will generate a platform key for the client to use on the device.

3. 해당 디바이스에서의 향후 API 호출을 위해, 클라이언트는 플랫폼 키를 온-디바이스 플랫폼으로 제공해야 한다. 3. For future API calls on the device, the client must provide the platform key to the on-device platform.

[159][159]

온-디바이스 플랫폼은 플랫폼 키가 패키지 이름 및 API 키와 매칭하는지 여부를 체크할 수 있다. 그러나, 온 디바이스 플랫폼은 일반적으로 다시 검증하기 위해 이를 중앙 기관으로 송신하지 않는다.The on-device platform may check whether the platform key matches the package name and API key. However, the on-device platform generally does not send it to a central authority for re-verification.

일부 경우, 디바이스는 하나 이상의 사용자에 의해 공유될 수 있다. 이와 같이, 온-디바이스 플랫폼은 API가 사용될 때 리스트로부터 프라이머리 계정을 추출 할 수 있다. 온-디바이스 플랫폼은 트레이닝 데이터를 프라이머리 계정에 연결하고 관련 모델을 업데이트 할 수 있다. 디바이스상에서 계정의 모델을 사용할 수 없는 경우, 온-디바이스 플랫폼은 클라우드로부터 클라이언트 애플리케이션의 모델을 다운로드하거나 베이스 모델(예를 들어, 연합 학습에서의 평균 모델)을 사용할 수 있다.In some cases, a device may be shared by more than one user. As such, the on-device platform can extract the primary account from the list when the API is used. The on-device platform can link training data to the primary account and update the relevant model. If the account's model is not available on the device, the on-device platform can either download the client application's model from the cloud or use a base model (eg, the average model in federated learning).

다른 양태에 따르면, 일부 구현에서, 사용자는 그의 위치 이력 또는 계정 이력을 지울 수 있다. 그러한 경우, 온-디바이스 플랫폼은 모든 해당 컨텍스트를 제거할 수 있다. 또한, 일부 구현에서, 플랫폼은 이 경우에 이 사용자에 대한 나머지 컨텍스트를 사용하여 모델을 재 트레이닝할 수 있다.According to another aspect, in some implementations, a user may clear his location history or account history. In such a case, the on-device platform may remove all corresponding contexts. Also, in some implementations, the platform may retrain the model using the remaining context for this user in this case.

예로서, 도 5a 및 5b는 본 개시의 예시적인 실시예에 따른 컨텍스트 특징을 삽입하는 예시적인 기계 학습 플랫폼(122)의 블록도를 도시한다. 특히, 도 5a는 예제가 예제 컬렉션에 저장되는 트레이닝 예제 전에 컨텍스트 특징을 삽입하는 컨텍스트 제공자(430)를 도시하고, 도 5b는 예제가 기계 학습 모델을 구현하는 예측 엔진으로 전달되기 전에 컨텍스트 특징을 삽입하는 컨텍스트 제공자(430)를 도시한다.By way of example, FIGS. 5A and 5B show block diagrams of an example machine learning platform 122 that embeds context features in accordance with example embodiments of the present disclosure. In particular, Figure 5a shows a context provider 430 inserting context features before training examples where examples are stored in an example collection, and Figure 5b inserting context features before examples are passed to a prediction engine implementing a machine learning model. Context provider 430 is shown.

도 6a 및 6b는 본 개시의 예시적인 실시예에 따른 모델 트레이닝을 수행하는 예시적인 디바이스의 블록도를 도시한다. 특히, 도 6a 및 6b는 백그라운드 트레이닝 프로세스를 도시한다.6A and 6B show block diagrams of an exemplary device for performing model training in accordance with an exemplary embodiment of the present disclosure. In particular, Figures 6a and 6b show the background training process.

도 6a에 도시된 바와 같이, 애플리케이션 프로세스는 트레이닝 데이터를 트레이닝 데이터 저장소에 공급할 수 있다. 트레이닝 프로세스는 (예를 들어, 유휴 및/또는 플러그 인과 같은 특정 디바이스 조건에 의해 허용되는 경우) 백그라운드로 스케줄링될 수 있다.As shown in FIG. 6A , the application process may supply training data to a training data store. The training process may be scheduled in the background (eg, when allowed by certain device conditions such as idle and/or plug-ins).

트레이닝 프로세스는 모델 상태 및 트레이닝 계획을 선택하여, 캐시로부터 데이터를 반복적으로 선택하여 모델을 트레이닝한 다음, 최종적으로 통계(들) 및 모델 업데이트 메시지(들)를 (예를 들어, 클라우드 서버로) 발행할 수 있다. 일부 구현에서, 트레이닝 단계가 길어질 수 있기 때문에(예를 들어, 수 분), 트레이닝 프로세스는 디바이스 상태의 변화에 기초하여 중단 및 재개될 수 있다.The training process selects the model state and training plan, iteratively selects data from the cache to train the model, and finally publishes the statistic(s) and model update message(s) (e.g. to the cloud server). can do. In some implementations, since the training phase can be lengthy (eg, several minutes), the training process can be stopped and resumed based on changes in device state.

도 6b는 연합 학습을 가능하게 하는 연합 학습 서비스를 포함한다는 점을 제외하고 도 6a와 유사하다. 도 6b에 도시된 바와 같이, 트레이닝 계획 및 모델은 연합 학습 서비스에 의해 배포될 수 있다. 트레이닝 프로세스는 백그라운드로 트레이닝을을 수행하여 모델 업데이트를 생성할 수 있다. 모델 업데이트는 (집계에 사용하기 위해) 연합 학습 서비스로 업로드될 수 있다. 또한, 일부 구현에서, 품질 보증(예를 들어, 반-자동 품질 보증)은 학습된 모델을 추출하여 그 모델을 디바이스로 다시 배포할 수 있다.Figure 6b is similar to Figure 6a except that it includes a federated learning service that enables federated learning. As shown in FIG. 6B , the training plan and model may be distributed by a federated learning service. The training process may perform training in the background to generate model updates. Model updates can be uploaded to the federated learning service (for use in aggregation). Also, in some implementations, quality assurance (eg, semi-automated quality assurance) may extract a learned model and redeploy the model to a device.

도 7은 본 개시의 예시적인 실시예에 따른 예시적인 연합 학습 프로세스의 그래픽 다이어그램을 도시한다.7 shows a graphical diagram of an exemplary federated learning process in accordance with an exemplary embodiment of the present disclosure.

예시적인 방법Exemplary method

도 8은 본 개시의 예시적인 실시예에 따른 기계 학습 모델을 사용하여 추론을 생성하는 예시적인 방법(800)의 흐름도를 도시한다.8 depicts a flow diagram of an example method 800 for generating inferences using a machine learning model in accordance with an exemplary embodiment of the present disclosure.

단계(802)에서, 컴퓨팅 시스템은 예측 애플리케이션 프로그래밍 인터페이스를 통해 제1 애플리케이션으로부터 입력 데이터를 수신할 수 있다.At 802 , the computing system may receive input data from the first application via the predictive application programming interface.

단계(804)에서, 컴퓨팅 시스템은 제1 애플리케이션에 의해 요청되고 제1 애플리케이션이 액세스 권한을 갖는 컨텍스트 특징들로 입력 데이터를 추가 (supplement)할 수 있다. 일부 구현에서, 단계(804)에서, 컴퓨팅 시스템은 하나 이상의 컨텍스트 유형 각각에 대한 제1 애플리케이션에 대한 권한 상태를 결정할 수 있다. 일부 구현에서, 입력 데이터는 제1 애플리케이션이 액세스 권한을 갖는 컨텍스트 유형들에 포함된 컨텍스트 특징들만으로 보충된다.At 804 , the computing system may supplement the input data with context features requested by the first application and to which the first application has access. In some implementations, at 804 , the computing system can determine a permission status for the first application for each of the one or more context types. In some implementations, the input data is supplemented with only context features included in the context types to which the first application has access.

단계(806)에서, 컴퓨팅 시스템은 제1 기계 학습 모델을 이용하여, 입력 데이터에 적어도 부분적으로 기초하고 추가 컨텍스트 특징들에 적어도 부분적으로 기초하여 적어도 하나의 추론을 생성할 수 있다. 단계(808)에서, 컴퓨팅 시스템은 예측 애플리케이션 프로그래밍 인터페이스를 통해 제1 애플리케이션에 적어도 하나의 추론을 제공할 수 있다.At 806 , the computing system may generate, using the first machine learning model, at least one inference based at least in part on the input data and at least in part on the additional context characteristics. At 808 , the computing system may provide the at least one inference to the first application via the predictive application programming interface.

도 9는 본 개시의 예시적인 실시예에 따른 기계 학습을 수행하기 위한 트레이닝 예제를 수집하기 위한 예시적인 방법(900)의 흐름도를 도시한다.9 depicts a flow diagram of an example method 900 for collecting training examples for performing machine learning in accordance with an exemplary embodiment of the present disclosure.

단계(902)에서, 컴퓨팅 시스템은 수집 애플리케이션 프로그래밍 인터페이스를 통해 제1 애플리케이션으로부터 새로운 트레이닝 예제를 수신할 수 있다. 단계(904)에서, 컴퓨팅 시스템은 제1 애플리케이션에 의해 요청되고 제1 애플리케이션이 액세스 권한을 갖는 컨텍스트 특징들로 새로운 트레이닝 예제를 추가할 수 있다. 일부 구현에서, 단계(904)에서, 컴퓨팅 시스템은 하나 이상의 컨텍스트 유형들 각각에 대한 제1 애플리케이션에 대한 권한 상태를 결정할 수 있다. 일부 구현에서, 새로운 트레이닝 예제는 제1 애플리케이션이 액세스 권한을 갖는 컨텍스트 유형들에 포함된 컨텍스트 특징들만으로 추가된다.At step 902 , the computing system may receive a new training example from the first application via the aggregation application programming interface. At step 904 , the computing system may add a new training example with context features requested by the first application and to which the first application has access. In some implementations, at 904 , the computing system can determine a permission status for the first application for each of the one or more context types. In some implementations, the new training example is added only with context features included in the context types to which the first application has access.

단계(906)에서, 컴퓨팅 시스템은 새로운 트레이닝 예제를 컨텍스트 특징과 함께 중앙 집중식 예제 데이터베이스에 저장할 수 있다. 일부 구현에서, 단계(906)에서 새로운 트레이닝 예제를 저장하는 단계는 수집 애플리케이션 프로그래밍 인터페이스를 통해 제1 애플리케이션에 대해 미리 정의된 하나 이상의 옵션 파라미터에 따라 중앙 집중식 예제 데이터베이스에 새로운 트레이닝 예를 저장하는 단계를 포함할 수 있다. 일 예로서, 하나 이상의 옵션 파라미터는 트레이닝 예제들이 저장되는 시간 기간을 정의하는 적어도 유효 기간 파라미터를 포함할 수 있다.At step 906 , the computing system may store the new training examples along with the context features in a centralized example database. In some implementations, storing the new training examples in step 906 includes storing the new training examples in a centralized example database according to one or more optional parameters predefined for the first application through the ingest application programming interface. may include As an example, the one or more optional parameters may include at least a validity period parameter defining a period of time for which training examples are stored.

일부 구현에서, 단계(906)에서 새로운 트레이닝 예제를 저장하는 단계는 하나 이상의 컨텍스트 특징들 중 적어도 제1 컨텍스트 특징에 만료 기간을 할당하는 단계를 포함할 수 있다. 방법(900)은 제1 컨텍스트 특징에 할당된 만료 기간의 종료시에 중앙 집중식 예제 데이터베이스로부터 제1 컨텍스트 특징 또는 전체 새로운 트레이닝 예제를 삭제하는 단계를 더 포함할 수 있다.In some implementations, storing the new training example at step 906 may include assigning an expiration period to at least a first one of the one or more context features. Method 900 may further include deleting the first context feature or the entire new training example from the centralized example database at the end of an expiration period assigned to the first context feature.

일부 구현에서, 방법(900)은 적어도 하나의 컨텍스트 유형에 대한 제1 애플리케이션에 대한 권한 상태에 대한 변경의 표시를 수신하는 단계; 그리고, 권한 상태에 대한 변경에 응답하여, 제1 애플리케이션과 관련된 트레이닝 예제와 관련된 적어도 하나의 컨텍스트 유형의 임의의 컨텍스트 특징을 중앙 집중식 예제 데이터베이스로부터 삭제하는 단계를 포함한다. 또한, 일부 구현에서, 방법(900)은 컨텍스트 특징들을 삭제하는 단계 이후, 중앙 집중식 예제 데이터베이스에서 제1 애플리케이션과 관련된 트레이닝 예들을 사용하여 제1 애플리케이션과 관련된 하나 이상의 기계 학습 모델을 재 트레이닝하는 단계를 더 포함할 수 있다.In some implementations, method 900 includes receiving an indication of a change to a permission status for a first application for at least one context type; and in response to the change to the permission status, deleting from the centralized example database any context characteristics of the at least one context type associated with the training example associated with the first application. Further, in some implementations, the method 900 includes, after deleting the context features, retraining one or more machine learning models associated with the first application using training examples associated with the first application in a centralized example database. may include more.

도 10은 본 개시의 예시적인 실시예에 따른 기계 학습 모델을 트레이닝하기 위한 예시적인 방법(1000)의 흐름도를 도시한다.10 depicts a flow diagram of an exemplary method 1000 for training a machine learning model in accordance with an exemplary embodiment of the present disclosure.

단계(1002)에서, 컴퓨팅 시스템은 중앙 집중식 예제 데이터베이스에 의해 저장된 하나 이상의 트레이닝 예제에 적어도 부분적으로 기초하여 제1 기계 학습 모델을 재 트레이닝하기 위해 트레이닝 애플리케이션 프로그래밍 인터페이스를 통해 제1 애플리케이션으로부터 명령을 수신할 수 있다. In step 1002, the computing system is configured to receive instructions from the first application via the training application programming interface to retrain the first machine learning model based at least in part on one or more training examples stored by the centralized example database. can

단계(1004)에서, 컴퓨팅 시스템은 중앙 집중식 예제 데이터베이스에 의해 저장된 하나 이상의 트레이닝 예제에 적어도 부분적으로 기초하여 제1 기계 학습 모델을 재 트레이닝할 수 있다.At 1004 , the computing system may retrain the first machine learning model based at least in part on one or more training examples stored by a centralized example database.

단계(1006)에서, 컴퓨팅 시스템은 재 트레이닝된 모델의 하나 이상의 파라미터 또는 모델의 재 트레이닝 동안 발생한 하나 이상의 파라미터에 대한 하나 이상의 변경을 기술하는 업데이트를 결정할 수 있다.At step 1006, the computing system may determine an update describing one or more parameters of the retrained model or one or more changes to one or more parameters that occurred during retraining of the model.

단계(1008)에서, 컴퓨팅 시스템은 그 업데이트를 다른 컴퓨팅 디바이스에 의해 제공된 다른 업데이트와의 집계를 위해 업데이트를 중앙 서버 컴퓨팅 디바이스에 전송할 수 있다.At step 1008 , the computing system may send the update to a central server computing device for aggregation of the update with other updates provided by other computing devices.

추가 개시additional start

본 명세서에서 논의된 기술은 서버, 데이터베이스, 소프트웨어 애플리케이션 및 다른 컴퓨터 기반 시스템뿐만 아니라 취해진 액션 및 그러한 시스템으로/로부터 전송된 정보를 참조한다. 컴퓨터 기반 시스템의 고유한 유연성 덕분에 컴포넌트 간 및 컴포넌트 중에서 매우 다양한 가능 구성, 조합, 및 태스크와 기능의 구분이 가능하다. 예를 들어, 본 명세서에서 논의된 프로세스는 단일 디바이스 또는 컴포넌트 또는 다수의 디바이스 또는 컴포넌트를 조합하여 사용하여 구현될 수 있다. 데이터베이스 및 애플리케이션은 단일 시스템에서 구현되거나 다수의 시스템에 분산될 수 있다. 분산된 컴포넌트는 순차적으로 또는 병렬로 작동할 수 있다.Techniques discussed herein refer to servers, databases, software applications and other computer-based systems as well as actions taken and information transferred to/from such systems. The inherent flexibility of computer-based systems allows for a wide variety of possible configurations, combinations, and distinctions between tasks and functions between and among components. For example, the processes discussed herein may be implemented using a single device or component or multiple devices or components in combination. Databases and applications can be implemented on a single system or distributed across multiple systems. Distributed components can operate sequentially or in parallel.

본 개시의 다양한 특정 예시적인 실시예들에 대하여 본 주제가 상세히 설명되었지만, 각각의 예는 개시의 제한이 아니라 설명을 위해 제공된다. 당업자는 전술한 내용을 이해하면 그러한 실시예에 대한 변경, 변형 및 등가물을 용이하게 생성할 수 있다. 따라서, 본 개시 내용은 당업자에게 명백한 바와 같이 본 주제에 대한 이러한 변경, 변형 및/또는 추가를 포함하는 것을 배제하지 않는다. 예를 들어, 일 실시예의 일부로서 도시되거나 기술된 특징은 다른 실시예와 함께 사용되어 또 다른 실시예를 생성할 수 있다. 따라서, 본 개시는 이러한 변경, 변형 및 등가물을 포함하는 것으로 의도된다. 특히, 도 8 내지 도 10은 각각 예시 및 논의를 위해 특정 순서로 수행되는 단계를 도시하지만, 본 개시의 방법은 특히 예시된 순서 또는 배열로 제한되지 않는다. 방법들(800, 900 및 1000)의 다양한 단계는 본 개시의 범위를 벗어나지 않으면서 다양한 방식으로 생략, 재배열, 조합 및/또는 적응될 수 있다.Although the subject matter has been described in detail with respect to various specific exemplary embodiments of the disclosure, each example is provided for illustrative purposes rather than limitations of the disclosure. Those of ordinary skill in the art, upon understanding the foregoing, can readily make changes, modifications, and equivalents to such embodiments. Accordingly, this disclosure is not excluded from covering such alterations, modifications and/or additions to the subject matter as would be apparent to those skilled in the art. For example, features shown or described as part of one embodiment may be used in conjunction with another embodiment to create another embodiment. Accordingly, this disclosure is intended to cover such modifications, variations and equivalents. In particular, although FIGS. 8-10 each show steps performed in a specific order for purposes of illustration and discussion, the methods of the present disclosure are not limited to the particularly illustrated order or arrangement. Various steps of methods 800, 900, and 1000 may be omitted, rearranged, combined, and/or adapted in various ways without departing from the scope of the present disclosure.

Claims (20)

컴퓨팅 디바이스로서,
하나 이상의 프로세서; 및
하나 이상의 비-일시적 컴퓨터 판독 가능 매체를 포함하고, 상기 비-일시적 컴퓨터 판독 가능 매체는,
하나 이상의 프로세서에 의해 구현되는 하나 이상의 애플리케이션;
하나 이상의 기계 학습 모델; 및
하나 이상의 프로세서에 의해 실행될 때, 컴퓨팅 디바이스로 하여금 동작들을 수행하는 온-디바이스 기계 학습 플랫폼을 구현하게 하는 명령들을 저장하고,
상기 동작들은,
예측 애플리케이션 프로그래밍 인터페이스를 통해 하나 이상의 애플리케이션 중 제1 애플리케이션으로부터 입력 데이터를 수신하는 단계;
입력 데이터에 적어도 부분적으로 기초하여 적어도 하나의 추론을 생성하기 위해 하나 이상의 기계 학습 모델 중 적어도 제1 기계 학습 모델을 이용하는 단계; 및
제1 기계 학습 모델에 의해 생성된 적어도 하나의 추론을 예측 애플리케이션 프로그래밍 인터페이스를 통해 제1 애플리케이션으로 제공하는 단계를 포함하는 것을 특징으로 하는 컴퓨팅 디바이스.
A computing device comprising:
one or more processors; and
one or more non-transitory computer readable media, the non-transitory computer readable media comprising:
one or more applications implemented by one or more processors;
one or more machine learning models; and
store instructions that, when executed by one or more processors, cause the computing device to implement an on-device machine learning platform that performs operations;
The actions are
receiving input data from a first one of the one or more applications via the predictive application programming interface;
using at least a first of the one or more machine learning models to generate at least one inference based at least in part on the input data; and
and providing at least one inference generated by the first machine learning model to the first application via the predictive application programming interface.
제1항에 있어서,
상기 하나 이상의 비-일시적 컴퓨터 판독 가능 매체는,
하나 이상의 애플리케이션으로부터 수신된 트레이닝 예제들을 저장하는 중앙 집중식 예제 데이터베이스를 추가로 저장하고; 그리고
상기 온-디바이스 기계 학습 플랫폼에 의해 수행되는 동작들은,
수집 애플리케이션 프로그래밍 인터페이스를 통해 제1 애플리케이션으로부터 새로운 트레이닝 예제를 수신하는 단계; 및
중앙 집중식 예제 데이터베이스에 새로운 트레이닝 예제를 저장하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨팅 디바이스.
According to claim 1,
the one or more non-transitory computer readable media comprising:
further store a centralized example database storing training examples received from one or more applications; and
The operations performed by the on-device machine learning platform are:
receiving new training examples from the first application via the aggregation application programming interface; and
and storing the new training examples in a centralized example database.
제2항에 있어서,
상기 중앙 집중식 예제 데이터베이스에 새로운 트레이닝 예제를 저장하는 단계는 수집 애플리케이션 프로그래밍 인터페이스를 통해 제1 애플리케이션에 대해 미리 정의된 하나 이상의 옵션 파라미터에 따라 중앙 집중식 예제 데이터베이스에 새로운 트레이닝 예제를 저장하는 단계를 포함하고,
상기 하나 이상의 옵션 파라미터는 트레이닝 예제가 저장되는 시간 기간을 정의하는 적어도 하나의 유효 기간(time-to-live) 파라미터를 포함하는 것을 특징으로 하는 컴퓨팅 디바이스.
3. The method of claim 2,
storing the new training examples in the centralized example database comprises storing the new training examples in the centralized example database according to one or more optional parameters predefined for the first application through an aggregation application programming interface;
wherein the one or more optional parameters include at least one time-to-live parameter defining a time period for which training examples are stored.
제2항에 있어서,
상기 하나 이상의 애플리케이션은 복수의 애플리케이션을 포함하고; 그리고
상기 중앙 집중식 예제 데이터베이스는 복수의 애플리케이션 중 둘 이상의 상이한 애플리케이션으로부터 수신된 트레이닝 예제를 저장하는 것을 특징으로 하는 컴퓨팅 디바이스.
3. The method of claim 2,
the one or more applications include a plurality of applications; and
and the centralized example database stores training examples received from two or more different applications of a plurality of applications.
제2항에 있어서,
상기 온-디바이스 기계 학습 플랫폼에 의해 수행되는 동작들은,
중앙 집중식 예제 데이터베이스에 의해 저장된 하나 이상의 트레이닝 예제에 적어도 부분적으로 기초하여 제1 기계 학습 모델을 재 트레이닝하기 위해 트레이닝 애플리케이션 프로그래밍 인터페이스를 통해 제1 애플리케이션으로부터 명령을 수신하는 단계; 및
명령에 응답하여, 제1 기계 학습 모델이 중앙 집중식 예제 데이터베이스에 의해 저장된 하나 이상의 트레이닝 예제에 적어도 부분적으로 기초하여 재 트레이닝되게 하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨팅 디바이스.
3. The method of claim 2,
The operations performed by the on-device machine learning platform are:
receiving instructions from the first application via the training application programming interface to retrain the first machine learning model based at least in part on one or more training examples stored by the centralized example database; and
responsive to the instruction, causing the first machine learning model to be retrained based at least in part on one or more training examples stored by the centralized example database.
제5항에 있어서,
상기 온-디바이스 기계 학습 플랫폼에 의해 수행되는 동작들은,
제1 기계 학습 모델이 재 트레이닝되게 한 후, 적어도 하나의 추가 추론을 생성하도록 그 재 트레이닝된 제1 기계 학습 모델을 사용하는 단계; 및
재 트레이닝된 제1 기계 학습 모델에 의해 생성된 적어도 하나의 추가 추론을 예측 애플리케이션 프로그래밍 인터페이스를 통해 제1 애플리케이션으로 제공하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨팅 디바이스.
6. The method of claim 5,
The operations performed by the on-device machine learning platform are:
after causing the first machine learning model to be retrained, using the retrained first machine learning model to generate at least one additional inference; and
and providing at least one additional inference generated by the retrained first machine learning model to the first application via the predictive application programming interface.
제5항에 있어서,
상기 하나 이상의 비-일시적 컴퓨터 판독 가능 매체는 기계 학습 엔진을 추가로 저장하고; 그리고
상기 중앙 집중식 예제 데이터베이스에 의해 저장된 하나 이상의 트레이닝 예제에 적어도 부분적으로 기초하여 제1 기계 학습 모델이 재 트레이닝되게 하는 단계는, 기계 학습 엔진이 트레이닝 계획에 따라 제1 기계 학습 모델을 재 트레이닝하게 하는 단계를 포함하는 것을 특징으로 하는 컴퓨팅 디바이스.
6. The method of claim 5,
the one or more non-transitory computer-readable media further storing a machine learning engine; and
causing the first machine learning model to be retrained based at least in part on one or more training examples stored by the centralized example database includes causing a machine learning engine to retrain the first machine learning model according to a training plan; Computing device comprising a.
제1항에 있어서,
상기 하나 이상의 애플리케이션은 복수의 애플리케이션을 포함하고; 그리고
상기 하나 이상의 프로세서에 의해 실행될 때, 컴퓨팅 디바이스로 하여금 온-디바이스 기계 학습 플랫폼을 구현하게 하는 명령들은,
하나 이상의 프로세서에 의해 실행될 때, 컴퓨팅 디바이스로 하여금 동작들을 수행하는 온-디바이스의 다중 테넌트(multi-tenant) 기계 학습 플랫폼을 구현하게 하는 명령들을 포함하고, 상기 동작들은,
복수의 애플리케이션에 대해 복수의 독립형 엔클레이브(independent enclaves)를 각각 유지하는 단계;
제1 애플리케이션의 신원을 검증하는 서명된 패키지 토큰을 제1 애플리케이션으로부터 수신하는 단계;
서명된 패키지 토큰을 인증하는 단계; 및
서명된 패키지 토큰의 인증에 응답하여, 복수의 독립형 엔클레이브 중 제1 엔클레이브에 대한 액세스를 제공하는 단계를 포함하고, 상기 제1 엔클레이브는 제1 애플리케이션과 연관되는 것을 특징으로 하는 컴퓨팅 디바이스.
According to claim 1,
the one or more applications include a plurality of applications; and
The instructions, when executed by the one or more processors, cause a computing device to implement an on-device machine learning platform, comprising:
instructions that, when executed by one or more processors, cause a computing device to implement an on-device multi-tenant machine learning platform that performs operations comprising:
maintaining a plurality of independent enclaves each for a plurality of applications;
receiving from the first application a signed package token that verifies the identity of the first application;
authenticating the signed package token; and
responsive to authentication of the signed package token, providing access to a first enclave of a plurality of stand-alone enclaves, the first enclave being associated with a first application.
제1항에 있어서,
상기 하나 이상의 프로세서에 의해 실행될 때, 컴퓨팅 디바이스로 하여금 온-디바이스 기계 학습 플랫폼을 구현하게 하는 명령은,
모바일 애플리케이션; 또는
컴퓨팅 디바이스의 운영 체제의 일부를 포함하는 것을 특징으로 하는 컴퓨팅 디바이스.
According to claim 1,
The instructions that, when executed by the one or more processors, cause a computing device to implement an on-device machine learning platform comprising:
mobile application; or
A computing device comprising a portion of an operating system of the computing device.
제1항에있어서,
상기 컴퓨팅 디바이스는 모바일 컴퓨팅 디바이스를 포함하고,
상기 하나 이상의 애플리케이션은 하나 이상의 모바일 애플리케이션을 포함하는 것을 특징으로 하는 컴퓨팅 디바이스.
According to claim 1,
The computing device comprises a mobile computing device,
wherein the one or more applications include one or more mobile applications.
하나 이상의 프로세서에 의해 실행될 때 컴퓨팅 디바이스로 하여금 동작들을 수행하는 온-디바이스 기계 학습 플랫폼을 구현하게 하는 명령들을 집합적으로 저장하는 하나 이상의 비-일시적 컴퓨터 판독 가능 저장 매체로서, 상기 동작들은,
예측 애플리케이션 프로그래밍 인터페이스를 통해 컴퓨팅 디바이스 상에 저장된 하나 이상의 애플리케이션 중 제1 애플리케이션으로부터 입력 데이터를 수신하는 단계;
입력 데이터에 적어도 부분적으로 기초하여 적어도 하나의 추론을 생성하도록 컴퓨팅 디바이스 상에 저장된 하나 이상의 기계 학습 모델 중 적어도 제1 기계 학습 모델을 사용하는 단계; 및
제1 기계 학습 모델에 의해 생성된 적어도 하나의 추론을 예측 애플리케이션 프로그래밍 인터페이스를 통해 제1 애플리케이션으로 제공하는 단계를 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 저장 매체.
One or more non-transitory computer-readable storage media that collectively store instructions that, when executed by one or more processors, cause a computing device to implement an on-device machine learning platform that performs operations comprising:
receiving input data from a first one of the one or more applications stored on the computing device via the predictive application programming interface;
using at least a first of the one or more machine learning models stored on the computing device to generate at least one inference based at least in part on the input data; and
and providing at least one inference generated by the first machine learning model to a first application via a predictive application programming interface.
제11항에 있어서,
상기 하나 이상의 비-일시적 컴퓨터 판독 가능 매체는 하나 이상의 애플리케이션으로부터 수신된 트레이닝 예제를 저장하는 중앙 집중식 예제 데이터베이스를 추가로 저장하고; 그리고
상기 온-디바이스 기계 학습 플랫폼에 의해 수행되는 동작들은,
수집 애플리케이션 프로그래밍 인터페이스를 통해 제1 애플리케이션으로부터 새로운 트레이닝 예제를 수신하는 단계; 및
중앙 집중식 예제 데이터베이스에 새로운 트레이닝 예제를 저장하는 단계를 더 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 저장 매체.
12. The method of claim 11,
the one or more non-transitory computer-readable media further stores a centralized example database storing training examples received from one or more applications; and
The operations performed by the on-device machine learning platform are:
receiving new training examples from the first application via the aggregation application programming interface; and
and storing the new training examples in a centralized example database.
제12항에 있어서,
상기 중앙 집중식 예제 데이터베이스에 새로운 트레이닝 예제를 저장하는 단계는 수집 애플리케이션 프로그래밍 인터페이스를 통해 제1 애플리케이션에 대해 미리 정의된 하나 이상의 옵션 파라미터에 따라 중앙 집중식 예제 데이터베이스에 새로운 트레이닝 예제를 저장하는 단계를 포함하고,
상기 하나 이상의 옵션 파라미터는 트레이닝 예제가 저장되는 시간 기간을 정의하는 적어도 하나의 유효 기간(time-to-live) 파라미터를 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 저장 매체.
13. The method of claim 12,
storing the new training examples in the centralized example database comprises storing the new training examples in the centralized example database according to one or more optional parameters predefined for the first application through an aggregation application programming interface;
and the one or more optional parameters include at least one time-to-live parameter defining a time period for which training examples are stored.
제12항에 있어서,
상기 하나 이상의 애플리케이션은 복수의 애플리케이션을 포함하고; 그리고
상기 중앙 집중식 예제 데이터베이스는 복수의 애플리케이션 중 둘 이상의 상이한 애플리케이션으로부터 수신된 트레이닝 예제를 저장하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 저장 매체.
13. The method of claim 12,
the one or more applications include a plurality of applications; and
and the centralized example database stores training examples received from two or more different ones of a plurality of applications.
제12항에 있어서,
상기 온-디바이스 기계 학습 플랫폼에 의해 수행되는 동작들은,
중앙 집중식 예제 데이터베이스에 의해 저장된 하나 이상의 트레이닝 예제에 적어도 부분적으로 기초하여 제1 기계 학습 모델을 재 트레이닝하기 위해 트레이닝 애플리케이션 프로그래밍 인터페이스를 통해 제1 애플리케이션으로부터 명령을 수신하는 단계; 및
명령에 응답하여, 제1 기계 학습 모델이 중앙 집중식 예제 데이터베이스에 의해 저장된 하나 이상의 트레이닝 예제에 적어도 부분적으로 기초하여 재 트레이닝되게 하는 단계를 더 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 저장 매체.
13. The method of claim 12,
The operations performed by the on-device machine learning platform are:
receiving instructions from the first application via the training application programming interface to retrain the first machine learning model based at least in part on one or more training examples stored by the centralized example database; and
responsive to the instruction, causing the first machine learning model to be retrained based at least in part on one or more training examples stored by the centralized example database.
제15항에 있어서,
상기 온-디바이스 기계 학습 플랫폼에 의해 수행되는 동작들은,
제1 기계 학습 모델이 재 트레이닝되게 한 후, 적어도 하나의 추가 추론을 생성하도록 그 재 트레이닝된 제1 기계 학습 모델을 사용하는 단계; 및
재 트레이닝된 제1 기계 학습 모델에 의해 생성된 적어도 하나의 추가 추론을 예측 애플리케이션 프로그래밍 인터페이스를 통해 제1 애플리케이션으로 제공하는 단계를 더 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 저장 매체.
16. The method of claim 15,
The operations performed by the on-device machine learning platform are:
after causing the first machine learning model to be retrained, using the retrained first machine learning model to generate at least one additional inference; and
and providing at least one additional inference generated by the retrained first machine learning model to the first application via the predictive application programming interface.
제15항에 있어서,
상기 하나 이상의 비-일시적 컴퓨터 판독 가능 매체는 기계 학습 엔진을 추가로 저장하고; 그리고
상기 중앙 집중식 예제 데이터베이스에 의해 저장된 하나 이상의 트레이닝 예제에 적어도 부분적으로 기초하여 제1 기계 학습 모델이 재 트레이닝되게 하는 단계는, 기계 학습 엔진이 트레이닝 계획에 따라 제1 기계 학습 모델을 재 트레이닝하게 하는 단계를 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 저장 매체.
16. The method of claim 15,
the one or more non-transitory computer-readable media further storing a machine learning engine; and
causing the first machine learning model to be retrained based at least in part on one or more training examples stored by the centralized example database includes causing a machine learning engine to retrain the first machine learning model according to a training plan; A non-transitory computer-readable storage medium comprising a.
제11항에 있어서,
상기 하나 이상의 애플리케이션은 복수의 애플리케이션을 포함하고; 그리고
상기 하나 이상의 프로세서에 의해 실행될 때, 컴퓨팅 디바이스로 하여금 온-디바이스 기계 학습 플랫폼을 구현하게 하는 명령들은,
하나 이상의 프로세서에 의해 실행될 때, 컴퓨팅 디바이스로 하여금 동작들을 수행하는 온-디바이스의 다중 테넌트 기계 학습 플랫폼을 구현하게 하는 명령들을 포함하고, 상기 동작들은,
복수의 애플리케이션에 대해 복수의 독립형 엔클레이브를 각각 유지하는 단계;
제1 애플리케이션의 신원을 검증하는 서명된 패키지 토큰을 제1 애플리케이션으로부터 수신하는 단계;
서명된 패키지 토큰을 인증하는 단계; 및
서명된 패키지 토큰의 인증에 응답하여, 복수의 독립형 엔클레이브 중 제1 엔클레이브에 대한 액세스를 제공하는 단계를 포함하고, 상기 제1 엔클레이브는 제1 애플리케이션과 연관되는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 저장 매체.
12. The method of claim 11,
the one or more applications include a plurality of applications; and
The instructions, when executed by the one or more processors, cause a computing device to implement an on-device machine learning platform, comprising:
instructions that, when executed by one or more processors, cause a computing device to implement an on-device, multi-tenant machine learning platform that performs operations comprising:
maintaining a plurality of stand-alone enclaves each for a plurality of applications;
receiving from the first application a signed package token that verifies the identity of the first application;
authenticating the signed package token; and
responsive to authentication of the signed package token, providing access to a first enclave of a plurality of stand-alone enclaves, the first enclave being associated with a first application computer readable storage medium.
제11항에 있어서,
상기 하나 이상의 프로세서에 의해 실행될 때, 컴퓨팅 디바이스로 하여금 온-디바이스 기계 학습 플랫폼을 구현하게 하는 명령은,
모바일 애플리케이션; 또는
컴퓨팅 디바이스의 운영 체제의 일부를 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 저장 매체.
12. The method of claim 11,
The instructions that, when executed by the one or more processors, cause a computing device to implement an on-device machine learning platform comprising:
mobile application; or
A non-transitory computer-readable storage medium comprising a portion of an operating system of a computing device.
컴퓨터 구현 방법으로서,
수집 애플리케이션 프로그래밍 인터페이스를 통해 컴퓨팅 디바이스에 의해, 컴퓨팅 디바이스에 저장된 복수의 애플리케이션 중 제1 애플리케이션으로부터 새로운 트레이닝 예제를 수신하는 단계;
컴퓨팅 디바이스에 의해, 그 새로운 트레이닝 예제를 중앙 집중식 예제 데이터베이스에 저장하는 단계;
컴퓨팅 디바이스에 의해, 중앙 집중식 예제 데이터베이스에 의해 저장된 하나 이상의 트레이닝 예제에 적어도 부분적으로 기초하여 컴퓨팅 디바이스에 의해 저장된 제1 기계 학습 모델을 재 트레이닝하기 위해 트레이닝 애플리케이션 프로그래밍 인터페이스를 통해 제1 애플리케이션으로부터 명령을 수신하는 단계;
명령에 응답하여, 컴퓨팅 디바이스에 의해, 중앙 집중식 예제 데이터베이스에 의해 저장된 하나 이상의 트레이닝 예제에 적어도 부분적으로 기초하여 제1 기계 학습 모델이 재 트레이닝되게 하는 단계;
컴퓨팅 디바이스에 의해, 예측 애플리케이션 프로그래밍 인터페이스를 통해 제1 애플리케이션으로부터 입력 데이터를 수신하는 단계;
입력 데이터에 적어도 부분적으로 기초하여 적어도 하나의 추론을 생성하도록 제1 기계 학습 모델을 이용하는 단계; 및
제1 기계 학습 모델에 의해 생성된 적어도 하나의 추론을 예측 애플리케이션 프로그래밍 인터페이스를 통해 제1 애플리케이션으로 제공하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 구현 방법.
A computer implemented method comprising:
receiving, by the computing device via the aggregation application programming interface, a new training example from a first one of the plurality of applications stored on the computing device;
storing, by the computing device, the new training example in a centralized example database;
Receive, by the computing device, instructions from the first application via the training application programming interface to retrain, by the computing device, a first machine learning model stored by the computing device based at least in part on one or more training examples stored by the centralized example database. to do;
in response to the instruction, causing, by the computing device, to retrain the first machine learning model based at least in part on one or more training examples stored by the centralized example database;
receiving, by the computing device, input data from the first application through the predictive application programming interface;
using the first machine learning model to generate at least one inference based at least in part on the input data; and
and providing at least one inference generated by the first machine learning model to the first application via a predictive application programming interface.
KR1020197035504A 2017-08-11 2018-04-26 On-device machine learning platform KR102320755B1 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/674,885 US11403540B2 (en) 2017-08-11 2017-08-11 On-device machine learning platform
US15/674,885 2017-08-11
PCT/US2018/029563 WO2019032156A1 (en) 2017-08-11 2018-04-26 On-device machine learning platform

Publications (2)

Publication Number Publication Date
KR20200002034A KR20200002034A (en) 2020-01-07
KR102320755B1 true KR102320755B1 (en) 2021-11-02

Family

ID=62152681

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197035504A KR102320755B1 (en) 2017-08-11 2018-04-26 On-device machine learning platform

Country Status (6)

Country Link
US (2) US11403540B2 (en)
EP (1) EP3491587B1 (en)
JP (1) JP6923676B2 (en)
KR (1) KR102320755B1 (en)
CN (1) CN110892425B (en)
WO (1) WO2019032156A1 (en)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI637280B (en) * 2017-05-16 2018-10-01 緯創資通股份有限公司 Monitoring method based on internet of things, fog computing terminal and internet of things system
WO2019232471A1 (en) 2018-06-01 2019-12-05 Nami Ml Inc. Machine learning at edge devices based on distributed feedback
WO2020246920A1 (en) * 2019-06-04 2020-12-10 Telefonaktiebolaget Lm Ericsson (Publ) Executing machine-learning models
KR20190096872A (en) * 2019-07-31 2019-08-20 엘지전자 주식회사 Method and apparatus for recognizing handwritten characters using federated learning
US11755884B2 (en) 2019-08-20 2023-09-12 Micron Technology, Inc. Distributed machine learning with privacy protection
US11392796B2 (en) * 2019-08-20 2022-07-19 Micron Technology, Inc. Feature dictionary for bandwidth enhancement
US11500929B2 (en) * 2019-11-07 2022-11-15 International Business Machines Corporation Hierarchical federated learning using access permissions
US11461593B2 (en) 2019-11-26 2022-10-04 International Business Machines Corporation Federated learning of clients
US11507836B1 (en) * 2019-12-20 2022-11-22 Apple Inc. Federated learning using local ground truth estimation
US10938979B1 (en) 2020-03-11 2021-03-02 Fmr Llc Generating and displaying custom-selected content in a mobile device application
JP6893010B1 (en) * 2020-06-09 2021-06-23 株式会社プレイド Information processing equipment, information processing methods, and programs
US11631033B2 (en) * 2020-07-03 2023-04-18 Mercari, Inc. On-device training of personalized model
CN112052149B (en) * 2020-09-06 2022-02-22 厦门理工学院 Big data information acquisition system and use method
WO2022054983A1 (en) * 2020-09-09 2022-03-17 엘지전자 주식회사 Method and apparatus for product recommendation in offline store on basis of federated learning
CN112288133A (en) * 2020-09-28 2021-01-29 珠海大横琴科技发展有限公司 Algorithm service processing method and device
CN112150280B (en) * 2020-10-16 2023-06-30 北京百度网讯科技有限公司 Federal learning method and device for improving matching efficiency, electronic device and medium
KR102526261B1 (en) * 2020-12-04 2023-04-27 한국전자기술연구원 Method for dynamic Artificial Intelligence model select based on space-time context
KR20220120154A (en) * 2021-02-23 2022-08-30 삼성전자주식회사 Method and device using machine learning model shared to multiple applications
US20220291981A1 (en) * 2021-03-09 2022-09-15 International Business Machines Corporation Deducing a root cause analysis model from augmented reality peer assistance sessions
WO2022239264A1 (en) * 2021-05-12 2022-11-17 ソニーグループ株式会社 Information processing device, information processing server, information processing method, and non-transitory computer readable storage medium
US11443245B1 (en) 2021-07-22 2022-09-13 Alipay Labs (singapore) Pte. Ltd. Method and system for federated adversarial domain adaptation
KR102592569B1 (en) * 2022-11-30 2023-10-23 한국전자기술연구원 ML model deply management method using AIoT platform
US11880511B1 (en) * 2023-01-30 2024-01-23 Kiloma Advanced Solutions Ltd Real-time automatic multilingual input correction

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150046060A1 (en) 2013-08-12 2015-02-12 Mitsubishi Electric Research Laboratories, Inc. Method and System for Adjusting Vehicle Settings

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8170841B2 (en) 2004-04-16 2012-05-01 Knowledgebase Marketing, Inc. Predictive model validation
JP2006134080A (en) * 2004-11-05 2006-05-25 Ntt Docomo Inc Portable terminal, and individual adaptive context acquiring method
US8160977B2 (en) * 2006-12-11 2012-04-17 Poulin Christian D Collaborative predictive model building
US8214308B2 (en) 2007-10-23 2012-07-03 Sas Institute Inc. Computer-implemented systems and methods for updating predictive models
US8606728B1 (en) 2011-06-15 2013-12-10 Google Inc. Suggesting training examples
US9519647B2 (en) * 2012-04-17 2016-12-13 Sandisk Technologies Llc Data expiry in a non-volatile device
US8429103B1 (en) * 2012-06-22 2013-04-23 Google Inc. Native machine learning service for user adaptation on a mobile platform
US9047463B2 (en) * 2012-06-29 2015-06-02 Sri International Method and system for protecting data flow at a mobile device
US9336494B1 (en) 2012-08-20 2016-05-10 Context Relevant, Inc. Re-training a machine learning model
US8533148B1 (en) 2012-10-01 2013-09-10 Recommind, Inc. Document relevancy analysis within machine learning systems including determining closest cosine distances of training examples
US20140189246A1 (en) * 2012-12-31 2014-07-03 Bin Xing Measuring applications loaded in secure enclaves at runtime
US8613055B1 (en) * 2013-02-22 2013-12-17 Ping Identity Corporation Methods and apparatus for selecting an authentication mode at time of issuance of an access token
EP2784714B1 (en) * 2013-03-28 2021-04-28 Alcatel Lucent Method of preventing access to sensitive data of a computing device
US9218574B2 (en) 2013-05-29 2015-12-22 Purepredictive, Inc. User interface for machine learning
US9294468B1 (en) * 2013-06-10 2016-03-22 Google Inc. Application-level certificates for identity and authorization
US9286574B2 (en) 2013-11-04 2016-03-15 Google Inc. Systems and methods for layered training in machine-learning architectures
US9503442B1 (en) * 2014-06-20 2016-11-22 EMC IP Holding Company LLC Credential-based application programming interface keys
US10102480B2 (en) * 2014-06-30 2018-10-16 Amazon Technologies, Inc. Machine learning service
US9977911B2 (en) * 2014-12-30 2018-05-22 Facebook, Inc. Methods and systems for managing permissions to access mobile device resources
US10713594B2 (en) 2015-03-20 2020-07-14 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing machine learning model training and deployment with a rollback mechanism
US9336483B1 (en) * 2015-04-03 2016-05-10 Pearson Education, Inc. Dynamically updated neural network structures for content distribution networks
US10812464B2 (en) * 2015-06-15 2020-10-20 Airwatch Llc Single sign-on for managed mobile devices
US9626654B2 (en) 2015-06-30 2017-04-18 Linkedin Corporation Learning a ranking model using interactions of a user with a jobs list
US20170012982A1 (en) * 2015-07-10 2017-01-12 Google Inc. Protecting Data From Unauthorized Access
US10380500B2 (en) 2015-09-24 2019-08-13 Microsoft Technology Licensing, Llc Version control for asynchronous distributed machine learning
EP3179690A1 (en) * 2015-12-11 2017-06-14 Gemalto Sa Mobile device having trusted execution environment
US10586173B2 (en) 2016-01-27 2020-03-10 Bonsai AI, Inc. Searchable database of trained artificial intelligence objects that can be reused, reconfigured, and recomposed, into one or more subsequent artificial intelligence models
US11743203B2 (en) * 2016-02-17 2023-08-29 Blackberry Limited Managing resource access
CN105912500B (en) * 2016-03-30 2017-11-14 百度在线网络技术(北京)有限公司 Machine learning model generation method and device
US11210583B2 (en) * 2016-07-20 2021-12-28 Apple Inc. Using proxies to enable on-device machine learning
US11087236B2 (en) * 2016-07-29 2021-08-10 Splunk Inc. Transmitting machine learning models to edge devices for edge analytics
US10536351B2 (en) * 2016-07-29 2020-01-14 Splunk Inc. Analytics for edge devices
US10996997B2 (en) * 2017-01-23 2021-05-04 International Business Machines Corporation API-based service command invocation
US20180241572A1 (en) * 2017-02-22 2018-08-23 Intel Corporation Techniques for remote sgx enclave authentication

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150046060A1 (en) 2013-08-12 2015-02-12 Mitsubishi Electric Research Laboratories, Inc. Method and System for Adjusting Vehicle Settings
JP2016525983A (en) 2013-08-12 2016-09-01 三菱電機株式会社 How to adjust the settings in the vehicle

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"Federated Learning of Deep Networks using Model Averaging", arXiv:1602.05629v1 [cs.LG], 17 Feb 2016.

Also Published As

Publication number Publication date
CN110892425B (en) 2024-02-20
US20220358385A1 (en) 2022-11-10
EP3491587B1 (en) 2020-06-24
US11403540B2 (en) 2022-08-02
WO2019032156A1 (en) 2019-02-14
US20190050746A1 (en) 2019-02-14
KR20200002034A (en) 2020-01-07
EP3491587A1 (en) 2019-06-05
JP2020528589A (en) 2020-09-24
CN110892425A (en) 2020-03-17
JP6923676B2 (en) 2021-08-25

Similar Documents

Publication Publication Date Title
KR102320755B1 (en) On-device machine learning platform
KR102459835B1 (en) On-device machine learning platform
US11356440B2 (en) Automated IoT device registration
US10652235B1 (en) Assigning policies for accessing multiple computing resource services
JP7405995B2 (en) User consent framework
US10776510B2 (en) System for managing personal data
US9667661B2 (en) Privileged account manager, dynamic policy engine
WO2017167121A1 (en) Method and device for determining and applying association relationship between application programs
CN103329113A (en) Proxy server configured for hierarchical caching and dynamic site acceleration and custom object and associated method
CN116566656A (en) Resource access method, device, equipment and computer storage medium
US11275851B2 (en) System, method, and storage medium for distributed data management
CN115842673A (en) Method and device for updating local authority information of client

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant