KR102464339B1 - 콘텐츠 요청들에 대응한 컴퓨팅 리소스의 효율적 사용 - Google Patents
콘텐츠 요청들에 대응한 컴퓨팅 리소스의 효율적 사용 Download PDFInfo
- Publication number
- KR102464339B1 KR102464339B1 KR1020227004918A KR20227004918A KR102464339B1 KR 102464339 B1 KR102464339 B1 KR 102464339B1 KR 1020227004918 A KR1020227004918 A KR 1020227004918A KR 20227004918 A KR20227004918 A KR 20227004918A KR 102464339 B1 KR102464339 B1 KR 102464339B1
- Authority
- KR
- South Korea
- Prior art keywords
- content
- requests
- request
- prioritization model
- holdout
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
- G06F9/4831—Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/40—Extraction of image or video features
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
콘텐츠 요청들에 응답하는 경우 컴퓨팅 리소스를 효율적으로 사용하기 위한 컴퓨터 저장 매체에 인코딩된 컴퓨터 프로그램들을 포함하는 방법, 시스템 및 장치. 방법은 수신된 콘텐츠 요청이 낮은 우선순위 요청인지 여부를 결정하기 위해, 우선순위화 모델 및 콘텐츠 제공자에 대한 최대 허용 가능한 부정적인 결과를 특정하는 특정된 임계치를 사용하는 것을 포함한다. 방법은 다른 콘텐츠 요청들에 대한 컴퓨팅 리소스에 대한 액세스를 제공하면서 낮은 우선순위 요청들에 응답하기 위해 컴퓨팅 리소스에 대한 액세스를 제한하는 단계를 더 포함한다. 방법은 또한 새로운 콘텐츠 요청들의 세트에 대한 데이터에 기초하여 우선순위화 모델 및 특정된 임계치를 정기적으로 업데이트하는 단계를 포함한다.
Description
본 명세서는 데이터 프로세싱 및 콘텐츠 요청들에 응답하는 컴퓨팅 리소스의 효율적 사용에 관한 것이다.
콘텐츠 제공자들은 정기적으로 수많은 콘텐츠 요청들을 수신하고 이러한 요청들에 대한 응답으로 콘텐츠를 제공한다. 이러한 요청들을 프로세싱하고 응답하려면 상당한 양의 컴퓨팅 리소스가 필요할 수 있다.
일반적으로, 본 명세서에 기술된 발명의 일 혁신적 양태는 데이터 프로세싱 장치에 의해, 클라이언트 디바이스로부터 콘텐츠 요청을 수신하는 단계; 상기 데이터 프로세싱 장치에 의해, 상기 콘텐츠 요청으로부터 피처(feature)들을 추출하는 단계; 상기 데이터 프로세싱 장치에 의해, 상기 피처들을 콘텐츠에 대한 이전 요청들의 세트를 사용하여 트레이닝된 우선순위화 모델(prioritization model)에 입력하는 단계; 상기 데이터 프로세싱 장치에 의해, 상기 우선순위화 모델로부터, 상기 모델에 입력된 상기 피처들에 기초하여 상기 콘텐츠 요청에 대한 우선순위 값(priority value)을 획득하는 단계; 목표 손실 백분율 및 상기 이전 콘텐츠 요청들의 세트에 대한 결과들에 기초하여 특정된 임계치를 결정하는 단계; 및 상기 데이터 프로세싱 장치에 의해, 상기 특정된 임계치 및 상기 요청에 대한 우선순위 값에 기초하여, 상기 요청에 응답하기 위해 사용되는 컴퓨팅 리소스에 대한 액세스를 제한(throttling)하는 단계를 포함하며, 상기 제한하는 단계는: 상기 우선순위화 모델이 상기 특정된 임계치를 만족하는 우선순위 값을 출력할 때, 상기 요청에 응답하기 위해 상기 컴퓨팅 리소스에 대한 액세스를 제공하는 것; 및 상기 우선순위화 모델이 상기 특정된 임계치를 만족시키지 못하는 우선순위 값을 출력할 때 컴퓨팅 리소스에 대한 액세스를 거부하는 것을 포함한다. 이 양태의 다른 실시예들은 상기 방법들의 액션들을 수행하도록 구성된 대응 시스템들, 디바이스들, 장치들 및 컴퓨터 프로그램들을 포함한다. 컴퓨터 프로그램들(예를 들어, 명령어들)은 컴퓨터 저장 디바이스에 인코딩될 수 있다. 이들 또는 다른 실시예들은 다음 구성들 중 하나 이상을 각각 선택적으로 포함할 수 있다.
방법들은 상기 콘텐츠 요청의 수신 후 수신된 콘텐츠에 대한 후속 요청들의 세트를 홀드아웃 요청(holdout request)들로서 식별하는 단계; 상기 홀드아웃 요청들에 대한 임의의 우선순위 값에 관계없이 상기 홀드아웃 요청들에 응답하는데 필요한 컴퓨팅 리소스들에 대한 액세스를 제공하는 단계; 상기 홀드아웃 요청에 응답하여 제공되는 콘텐츠에 대한 실제 결과들을 모니터링하는 단계; 및 상기 실제 결과들에 기초하여, 상기 우선순위화 모델을 업데이트하는 단계를 포함한다.
상기 우선순위화 모델을 업데이트 하는 단계는: 상기 홀드아웃 요청들에 응답하여 제공된 콘텐츠에 대한 우선순위 값들을 획득하는 것; 상기 우선순위 값들과 실제 결과들을 비교하는 것; 및 상기 우선순위 값들과 실제 결과들 간의 차이에 기초하여 상기 우선순위 모델을 조정하는 것을 포함할 수 있다.
방법은 상기 목표 손실 백분율과 상기 컴퓨팅 리소스에 대한 액세스가 거부된 드롭된 콘텐츠 요청들의 백분율 사이의 관계에 기초하여 상기 우선순위화 모델을 조정하는 단계를 포함할 수 있다.
방법들은 상기 데이터 프로세싱 장치에 의해, 상기 모델로부터, 상기 모델에 입력된 상기 피처들에 기초하여 상기 콘텐츠 요청에 대한 우선순위 값(priority value)을 획득하는 단계, 상기 우선순위화 모델을 사용하여, 상기 콘텐츠 요청이 이전 콘텐츠 요청들의 세트에서 요청들에 대한 결과들에 기초하여 긍정적 결과를 생성할 확률을 결정하는 것을 포함하며; 및 상기 우선순위화 모델을 사용하여, 상기 콘텐츠에 대한 이전 요청들에 의해 생성된 긍정적 결과들에 기초하여 상기 콘텐츠 요청에 대한 긍정적 결과의 예상 크기를 결정하는 것; 및 상기 데이터 프로세싱 장치에 의해, 상기 우선순위 값을 생성하기 위해 상기 콘텐츠 요청이 긍정적 결과를 생성할 확률을 상기 긍정적 결과의 예상 크기와 결합하는 것을 포함한다.
목표 손실 백분율 및 상기 이전 콘텐츠 요청들의 세트에 대한 결과들에 기초하여 특정된 임계치를 결정하는 단계는 상기 이전 콘텐츠 요청들의 세트에서 각 요청에 대한 결과를 획득하는 것; 상기 이전 콘텐츠 요청들의 세트에 대한 집계된 결과를 생성하기 위해 상기 콘텐츠에 대한 이전 콘텐츠 요청들의 세트에서 각 요청에 대한 상기 결과를 집계하는 것; 및 상기 특정된 임계치를 생성하기 위해 상기 집계된 결과를 목표 손실 백분율로 스케일링하는 것을 포함할 수 있다.
방법들은 상기 목표 손실 백분율 및 상기 홀드아웃 요청들에 대한 결과들에 기초하여 상기 특정된 임계치를 업데이트하는 단계를 포함할 수 있다.
상기 목표 손실 백분율 및 상기 홀드아웃 요청들에 대한 결과들에 기초하여 상기 특정된 임계치를 업데이트하는 단계는 상기 홀드아웃 요청들에서 각 요청에 대한 결과를 획득하는 것; 상기 홀드아웃 요청들에 대한 집계된 결과를 생성하기 위해 상기 홀드아웃 요청들에서 각 요청에 대한 결과를 집계하는 것; 및 상기 특정된 임계치를 생성하기 위해 상기 집계된 결과를 목표 손실 백분율로 스케일링하는 것을 포함할 수 있다.
상기 언급한 바와 같이, 요청들을 프로세싱하고 응답하는 것은 상당한 양의 컴퓨팅 리소스가 필요할 수 있지만 특정 결과는 보장하지는 않는다. 예를 들어, 이러한 요청들 중 일부는 콘텐츠 제공자에게 긍정적인 결과를 가져오는 반면, 다른 요청들은 그렇지 않다. 긍정적인 결과는 사용자가 콘텐츠 제공자에 의해 제공되는 콘텐츠와 인터렉션하는 것과 같이, 콘텐츠 제공자에 유리한 결과를 가져오는 요청에 대한 임의의 응답일 수 있다. 예를 들어, 사용자는 입력 디바이스로 콘텐츠를 선택하거나, 콘텐츠를 다운로드하거나, 커서로 콘텐츠를 가리키거나, 출력 디바이스에서 콘텐츠를 봄으로써 콘텐츠와 인터렉션할 수 있다. 반대로, 일부 콘텐츠 요청들은 사용자가 콘텐츠 제공자에 의해 제공된 콘텐츠와 인터렉션하지 않을 수 있다. 따라서, 콘텐츠 제공자에게는 긍정적인 결과를 가져오지 않지만 상당한 양의 컴퓨팅 리소스를 소비해야 하는 일부 콘텐츠 요청들이 있다. 어느 경우에나, 요청들을 프로세싱하고 응답하는 것은 제한된 컴퓨팅 리소스를 소비하여 다른 요청들을 프로세싱하거나 다른 작업들에 할당될 수 없게 한다(예를 들어, 요청 프로세싱과 완전히 독립적인 프로세스를 가능하게 함). 본 문서는 긍정적인 결과로 이끌 가능성이 큰 것으로 식별된 요청들에 컴퓨팅 리소스의 할당을 제한하여, 모든 요청들을 처리하기 위해 할당되었을 수 있는 컴퓨팅 리소스들을 다른 작업들에 할당하기 위해 자유롭게 함으로써 요청 프로세싱 효율성을 개선할 수 있는 다양한 기법과 시스템에 대해 설명한다.
본 명세서에 기술된 본 발명의 특정한 실시예들은 다음의 이점들을 실현하도록 구현될 수 있다. 예를 들어, 본 명세서에 기술된 혁신은 콘텐츠 요청들에 응답하기 위한 컴퓨팅 리소스의 효율적인 사용을 용이하게 한다. 특히, 본 명세서에 기술된 혁신은 콘텐츠 제공자에게 긍정적인 결과를 가져오지 않는 콘텐츠 요청들에 대해 컴퓨팅 리소스를 소비하는 대신 컴퓨팅 리소스를 보존함으로써 운영 효율성을 달성한다. 결과적으로, 이들 컴퓨팅 리소스는 높은 우선순위 요청, 즉 콘텐츠 제공자에게 긍정적인 결과를 가져오는 콘텐츠 요청에 이용 가능하게 될 수 있다.
다른 예로서, 본 명세서에 기술된 혁신은 보다 정확한 예측 모델링을 통해 콘텐츠 요청의 보다 정확한 우선순위화를 용이하게 한다. 기존 모델은 일반적으로 정적이다. 즉, 새로운 데이터 세트로 업데이트되지 않는다. 이러한 모델은 기초가 되는 오래된 정적 데이터로 인해 높은 우선순위 요청을 낮은 우선순위 요청으로 잘못 분류할 수 있다. 본 명세서에 기술된 모델링 기법은 홀드아웃 요청으로 지칭되는 새로운 콘텐츠 요청들의 세트를 사용하여 정기적으로 업데이트되는 동적 모델을 활용함으로써, 요청 분류에서 보다 높은 정확도를 달성한다. 모델 트레이닝 및 업데이트의 일부로서, 이러한 홀드아웃 요청들에는 예를 들어 그 요청들이 낮은 우선순위 요청들로 분류될 수 있는 피처들이 포함되는지 여부에 관계없이 필수 컴퓨팅 리소스에 대한 액세스가 제공된다. 이러한 홀드아웃 요청들에 필수 컴퓨팅 리소스를 제공함으로써, 그들의 실제 결과가 결정될 수 있고, 그 다음 실제 결과와 모델에 의해 생성된 우선순위 값의 차이에 기초하여 모델을 업데이트하는데 사용될 수 있다. 따라서 업데이트된 모델은 향후 콘텐츠 요청들에 대해 보다 정확한 우선순위 값을 생성한다. 다시 말해, 미래의 콘텐츠 요청은 보다 정확하게 높거나 낮은 우선순위 요청들로서 분류될 수 있다.
본 명세서에서 본 발명의 하나 이상의 실시예들의 세부 사항은 첨부 도면과 아래의 설명에서 기술된다. 본 발명의 다른 구성들, 양태들 및 이점들은 설명, 도면 및 청구항으로부터 명백해질 것이다.
도 1은 제시하기 위한 콘텐츠가 배포되는 예시적 환경의 블록도이다.
도 2는 콘텐츠 요청에 응답하기 위해 필요한 컴퓨팅 리소스에 대한 액세스를 제공할지 여부를 결정하기 위한 예시적 프로세스의 흐름도이다.
도 3는 우선순위화 모델을 업데이트하기 위한 예시적 프로세스의 흐름도이다.
도 4는 특정된 임계치를 결정하기 위한 예시적 프로세스의 흐름도이다.
도 5는 예시적 컴퓨터 시스템의 블록도이다.
다양한 도면들에서 동일한 참조 번호 및 기호는 동일한 구성요소를 표시한다.
도 2는 콘텐츠 요청에 응답하기 위해 필요한 컴퓨팅 리소스에 대한 액세스를 제공할지 여부를 결정하기 위한 예시적 프로세스의 흐름도이다.
도 3는 우선순위화 모델을 업데이트하기 위한 예시적 프로세스의 흐름도이다.
도 4는 특정된 임계치를 결정하기 위한 예시적 프로세스의 흐름도이다.
도 5는 예시적 컴퓨터 시스템의 블록도이다.
다양한 도면들에서 동일한 참조 번호 및 기호는 동일한 구성요소를 표시한다.
콘텐츠 제공자는 정기적으로 수많은 콘텐츠 요청을 수신하고 이에 응답한다. 이러한 요청들을 프로세싱하고 응답하려면 상당한 양의 컴퓨팅 리소스가 필요할 수 있다. 일부 시나리오에서, 콘텐츠 제공자들은 상당한 양의 컴퓨팅 리소스를 필요로 하는 콘텐츠 요청들을 수신하지만, 콘텐츠 제공자에게 긍정적인 결과를 가져오지 않는다. 본 명세서에서 낮은 우선순위 요청들로 지칭될 이러한 요청들은 높은 우선순위 요청들 즉, 콘텐츠 제공자에게 긍정적인 결과를 가져오는 요청들이 사용가능할 수 있었던 컴퓨팅 리소스를 소비한다. 긍정적인 결과는 사용자가 콘텐츠 제공자에 의해 제공되는 콘텐츠와 인터렉션하는 것과 같이, 콘텐츠 제공자에 유리한 결과를 가져오는 요청에 대한 임의의 응답일 수 있다.
본 명세서에 기술된 바와 같이, 컴퓨팅 리소스는 낮은 우선순위 요청들에 응답하는데 필요한 컴퓨팅 리소스에 대한 액세스를 제한하고 높은 우선순위 요청들에 응답하는데 필요한 컴퓨팅 리소스에 대한 액세스를 제공함으로써 효율적으로 사용될 수 있다. 콘텐츠 요청에 응답하는데 필요한 컴퓨팅 리소스에 대한 액세스를 제한할지 여부를 결정함에 있어서, 콘텐츠 제공자는 먼저 콘텐츠 요청이 낮은 우선순위 요청인지 여부를 결정한다. 이러한 결정을 용이하게 하기 위해, 콘텐츠 제공자는 콘텐츠 요청으로부터 피처들을 추출하고, 이들 피처들을 우선순위화 모델에 입력한다.
콘텐츠에 대한 이전 요청들의 세트에 대한 데이터를 사용하여 트레이닝된 우선순위화 모델은 상기 우선순위화 모델에 입력된 콘텐츠 요청들의 피처들에 기초하여 수신된 콘텐츠 요청에 대한 우선순위 값을 결정한다. 차례로, 우선순위화 모델은 요청이 아래에서 더 상세히 논의되는 바와 같이, 예를 들면, 높은 우선순위 요청인지 또는 낮은 우선순위 요청인지 여부를 결정하는데 사용될 수 있는 콘텐츠 요청에 대한 우선순위 값을 출력한다.
콘텐츠 제공자는 또한 컴퓨팅 리소스에 대한 액세스의 제한을 제어하는, 콘텐츠 제공자에 대한 최대 허용 가능한 부정적인 결과를 나타내는 특정된 임계치를 결정한다. 특정된 임계치는 본 명세서 전반에 걸쳐 상세히 설명된 바와 같이, 미리 결정된 목표 손실 백분율에 의해 스케일링된 것과 같이, 이전 콘텐츠 요청들의 세트의 실제 결과에 기초하여 결정될 수 있다.
콘텐츠 제공자는 콘텐츠 요청의 우선순위 값을 특정된 임계치와 비교한다. 콘텐츠 요청에 대한 우선순위 값이 특정된 임계치를 만족하지 않으면, 요청은 낮은 우선순위 요청인 것으로 간주된다. 반면에, 콘텐츠 요청에 대한 우선순위 값이 특정된 임계치를 만족하면, 요청은 높은 우선순위 요청인 것으로 간주된다.
콘텐츠 제공자는 또한 콘텐츠 요청에 응답하는데 필요한 컴퓨팅 리소스에 대한 액세스를 제공(또는 할당)할지 여부를 결정한다. 콘텐츠 제공자가 상기 요청이 낮은 우선순위 요청이라고 결정한 경우, 콘텐츠 제공자는 요청에 응답하는데 필요한 컴퓨팅 리소스에 대한 액세스를 제한한다. 반면에, 콘텐츠 제공자가 상기 요청이 높은 우선순위 요청이라고 결정한 경우, 콘텐츠 제공자는 요청에 응답하는데 필요한 컴퓨팅 리소스에 대한 액세스를 제공한다.
우선순위화 모델이 시간이 지남에 따라 수신되는 콘텐츠 요청에 대한 정확한 예측을 계속 제공하도록 하기 위해, 콘텐츠 제공자는 상기 논의된 제한을 받지 않는 새로운 콘텐츠 요청들의 세트를 사용하여 우선순위화 모델을 정기적으로 업데이트하여, 새로운 콘텐츠 요청들의 세트의 모든 요청들이 프로세싱되도록 한다. 구체적으로, 콘텐츠 제공자는 이 새로운 콘텐츠 요청들의 세트의 실제 결과 및 우선순위 값을 평가하고, 우선순위화 모델을 업데이트하기 위해 실제 결과와 우선순위 값의 차이를 사용할 수 있다.
이러한 구성 및 추가 구성은 도 1-5를 참조하여 아래에 자세히 설명된다.
도 1은 제시하기 위한 콘텐츠가 배포되는 예시적 환경(100)의 블록도이다. 예시적 환경(100)은 근거리 네트워크(LAN), 광역 네트워크(WAN), 인터넷 또는 그들의 조합과 같은 네트워크(108)를 포함한다. 네트워크(108)는 콘텐츠 제공자(130) 및 클라이언트 디바이스(102)를 연결한다. 예시적 환경(100)은 많은 상이한 콘텐츠 제공자(130) 및 클라이언트 디바이스(102)를 포함할 수 있다.
클라이언트 디바이스(102)는 네트워크(108)를 통해 콘텐츠 및 리소스들을 요청하고 수신할 수 있는 전자 디바이스이다. 예시적 클라이언트 디바이스(102)는 퍼스널 컴퓨터들, 모바일 통신 디바이스들, 디지털 어시스턴트 디바이스 및 네트워크(108)를 통해 데이터를 송수신할 수 있는 기타 디바이스를 포함한다. 클라이언트 디바이스(102)는 일반적으로 네트워크(108)를 통해 데이터의 송수신을 지원하기 위한 웹 브라우저와 같은 사용자 어플리케이션을 포함하지만, 클라이언트 디바이스(102)에 의해 실행되는 네이티브 어플리케이션(native application)도 네트워크(108)를 통해 콘텐츠의 송수신을 지원할 수 있다.
클라이언트 디바이스(102)에 제시된 콘텐츠의 예는 웹페이지, 워드 프로세싱 문서, PDF(Portable Document Format) 문서, 이미지, 비디오 및 검색 결과 페이지를 포함한다. 콘텐츠는 콘텐츠 제공자(130)에 의해 클라이언트 디바이스(102)에 제공될 수 있다. 예를 들어, 일부 구현예에서, 콘텐츠 제공자(130)는 콘텐츠 요청에 응답하여 제공되는 콘텐츠를 호스팅하는 콘텐츠 서버(126)를 포함한다. 이 예에서, 클라이언트 디바이스(102)는 콘텐츠 요청(104)을 개시할 수 있다. 콘텐츠 요청(104)은 사용자 디바이스(102)에 의해, 네트워크(108)(예를 들어, 통신 네트워크)를 통해, 콘텐츠 제공자(130)에게 전송된다.
일부 구현예에서, 콘텐츠 제공자(130)는 요청 분석기(110), 데이터 저장소(116), 우선순위화 모델(122), 제한(throttling) 엔진(124) 및 하나 이상의 콘텐츠 서버(126)를 포함한다. 콘텐츠 제공자(130)는 데이터 프로세싱 장치 또는 도 5를 참조하여 설명된 컴퓨터 시스템 또는 임의의 다른 적절한 프로세싱 시스템으로서 구현될 수 있다.
도 1의 블록도에 도시된 바와 같이, 콘텐츠 제공자(130)는 다양한 서브 블록을 갖는 단일 블록으로서 도시된다. 그러나, 콘텐츠 제공자는 단일 디바이스 또는 디바이스들의 단일 세트일 수 있고, 본 명세서는 콘텐츠 제공자가 콘텐츠를 클라이언트 디바이스에 제공하기 위해 통신하는 디바이스 디바이스들의 그룹 또는 다수의 상이한 시스템들일 수 있음을 고려한다. 예를 들어, 콘텐츠 제공자는 검색 시스템, 비디오 스트리밍 서비스, 오디오 스트리밍 서비스, 내비게이션 서비스 또는 임의의 다른 서비스 중 하나 이상을 포함할 수 있다. 콘텐츠 제공자는 콘텐츠의 퍼블리셔를 포함하거나 퍼블리셔와 다른 엔터티일 수 있다.
전술한 콘텐츠 제공자(130)의 컴포넌트는 콘텐츠 요청이 낮은 우선순위 요청인지 여부 및 콘텐츠 요청에 응답하기 위해 필요한 컴퓨팅 리소스에 대한 액세스를 제공할 것인지 여부를 결정한다. 이들 컴포넌트의 동작은 도 2를 참조하여 설명되며, 이는 콘텐츠 요청에 응답하기 위해 필요한 컴퓨팅 리소스에 대한 액세스를 제공할지 여부를 결정하기 위해 콘텐츠 제공자에 의해 구현되는 예시적 프로세스(200)의 흐름도이다. 프로세스(200)의 동작은 단지 예시의 목적으로 설명된다. 프로세스(200)의 동작은 임의의 적절한 디바이스 또는 시스템, 예를 들어 임의의 적절한 데이터 프로세싱 장치에 의해 수행될 수 있다. 또한, 프로세스(200)의 동작은 컴퓨터 판독가능 매체에 저장된 명령어들로서 구현될 수 있으며, 상기 명령어들은 하나 이상의 데이터 프로세싱 장치에 의해 실행될 때, 상기 하나 이상의 데이터 프로세싱 장치로 하여금 프로세스(200)의 동작들을 수행하게 한다.
콘텐츠 제공자(130)는 클라이언트 디바이스로부터 콘텐츠 요청(104)을 수신한다(202에서). 예를 들어, 콘텐츠 요청(104)은 모바일 디바이스의 브라우저를 통해 사용자에 의해 송신되고 콘텐츠 제공자(130)에 의해 수신되는 "저렴한 세금 준비 회사"라는 단어를 포함하는 쿼리일 수 있다. 예를 들어, 콘텐츠 제공자(130)는 콘텐츠를 클라이언트 디바이스(102)에 전송함으로써 콘텐츠 요청(104)에 응답하도록 구성된 검색 엔진 또는 임의의 다른 유형의 서비스(예를 들어, 웹 서버)일 수 있다.
콘텐츠 제공자(130)는 콘텐츠 요청(104)으로부터 피처(feature)들을 추출한다(204에서). 콘텐츠 요청(104)을 수신하면, 이 요청은 콘텐츠 제공자(130)의 요청 분석기(110) 컴포넌트로 송신된다. 일부 구현예에서, 요청 분석기(110)는 2개의 서브 컴포넌트들: 피처 추출기(112) 및 우선순위 분석기(114)를 포함한다. 피처 추출기(112)는 콘텐츠 요청(104)으로부터 하나 이상의 피처들을 추출한다. 본 명세서에서 사용되는 용어 "피처"는 요청에 응답하여 제공할 적절한 콘텐츠를 선택하기 위해 콘텐츠 제공자(130)에 의해 사용될 수 있는 콘텐츠 요청(104)의 임의의 속성을 지칭할 수 있다. 예를 들어, 피처 추출기(112)는 콘텐츠 요청(104)로부터 피처들을 추출할 수 있고, 상기 피처들은 다른 피처들 중에서도 특히, 요청을 참조하는 키워드, 요청에서 참조된 엔터티(예를 들어, 사람, 장소, 사물), 지리 정보(예를 들어, 요청이 제출된 지역, 네트워크 위치), 요청하는 디바이스(예를 들어, 클라이언트 디바이스(102))의 이름(또는 네트워크 위치), 사용자가 광고 차단기를 사용하고 있는지 여부, 사용자가 사용하고 있는 디바이스의 유형(데스크톱의 브라우저, 모바일 디바이스의 브라우저), 브라우저의 유형(예: Chrome, Safari, Firefox), 요청 시간 및 요청 날짜를 포함한다. 본 명세서에 사용된 바와 같이, 피처들을 추출하는 것은 콘텐츠 요청 내의 피처들을 식별할뿐만 아니라 콘텐츠 요청으로부터 피처들을 검색하는 것을 포함한다.
위의 예에서, 콘텐츠 제공자는 사용자가 자신의 모바일 디바이스의 브라우저를 통해 송신한 "저렴한 세금 준비 회사"라는 단어를 포함하는 쿼리로부터 피처들을 추출한다. 이 예에서 추출된 피처들은 쿼리에 존재하는 단어("저렴한 세금 준비 회사"), 클라이언트 디바이스(104)의 IP 주소를 포함할 수 있으며, 이는 쿼리가 캘리포니아 샌 마테오에서 유래하였고, 사용자가 자신의 모바일 디바이스에서 Brand X 브라우저를 사용하고 있다는 것을 결정하는데 사용될 수 있다.
그 후, 콘텐츠 제공자는 추출된 피처들의 일부 또는 전부를 우선순위화 모델에 입력한다(206에서). 우선순위화 모델은 우선순위 값으로 지칭되는 수치를 생성하도록 구성된다. 우선순위 값은 개별 콘텐츠 요청이 상기 요청에 응답하기 위해 컴퓨팅 리소스에 대한 액세스가 허용되는지를 결정하기 위해 콘텐츠 요청의 우선순위화하는데 사용될 수 있다. 피처 추출기(112)는 콘텐츠 요청(104)으로부터 피처들을 추출할 때, 상기 피처들을 우선순위화 모델(122)에 입력한다. 위의 예에서, 단어 "저렴한 세금 준비 회사", 캘리포니아 주 샌 마테오, 모바일 디바이스 및 브랜드 X 브라우저들이 피처들로서 우선순위화 모델에 입력된다.
피처 추출기(112)가 우선순위화 모델(122)에 입력하는 피처들에 기초하여, 우선순위화 모델(122)은 콘텐츠 요청(104)에 대한 우선순위 값을 출력한다(208에서). 일부 구현예에서, 우선순위화 모델(122)은 이전 콘텐츠 요청들의 세트로부터의 데이터를 사용하여 생성될 수 있다. 구체적으로, 우선순위화 모델(122)은 콘텐츠 요청에 대한 우선순위 값을 결정하기 위해 이전 콘텐츠 요청들 및 이전 콘텐츠 요청들의 실제 결과들로부터 추출된 피처들을 사용할 수 있다.
우선순위화 모델(122)은 SM1(118) 및 SM2(120)의 2개의 서브 모델을 포함할 수 있다. SM1(118)은 요청이 긍정적인 결과를 생성할 확률을 결정하고, SM2(120)는 긍정적인 결과를 갖는 콘텐츠 요청에 대한 조건부 예상 결과를 결정한다. SM1(118) 및 SM2(120)의 출력은 우선순위 값을 생성하기 위해 결합될 수 있다.
우선순위화 모델(122)의 제1 서브 모델(SM1(118))은 이전 콘텐츠 요청들의 세트에 의해 생성된 결과들에 기초하여 콘텐츠 요청이 긍정적인 결과를 생성할 확률을 예측한다(214에서). 피처 추출기(112)는 이전 콘텐츠 요청들으로부터 피처들을 추출하고, 우선순위 분석기(114)는 이들 요청들 각각에 대한 결과들을 획득한다. 이전 콘텐츠 요청들에 대한 이들 추출된 피처들 및 결과들은 데이터 저장소(116)에 저장된다. SM1(118)은 데이터 저장소(116)로부터의 이전 콘텐츠 요청들에 대한 이들 피처들 및 결과들을 특정하는 데이터에 액세스한다. 일부 구현예에서, 제1 서브 모델은 피처 레벨 X를 갖는 콘텐츠 요청 CR에 대해, 다음 가정들에 따라 모델이 긍정적인 결과를 생성할 CR의 확률을 예측하는 포아송 회귀 모델(Poisson Regression model)을 사용한다:
여기서 OX는 피처 레벨 X를 가진 콘텐츠 요청이 발생한 횟수(오프셋)이고, NX는 예상된 긍정적인 결과를 가진 횟수이며, Θ는 모델의 파라미터 벡터를 나타낸다.
예를 들어, SM1(118)은 이전 쿼리들에 대한 모든 결과 데이터(긍정적 결과 및 부정적 결과를 모두 갖는 쿼리들을 포함)에 기초하여, 쿼리가 긍정적인 결과를 생성할 확률(예를 들어, 사용자가 쿼리에 응답하여 제공된 콘텐츠와 인터렉션할 가능성)을 결정할 수 있다. 따라서, 콘텐츠 요청 CR이 긍정적 결과를 가져올 확률은, 위의 예에서 쿼리가 사용자가 인터렉션할 수 있는 콘텐츠의 제공으로 이어지는지 여부는 다음과 같이 추정된다:
P(인터렉션> 0)
우선순위화 모델(122)의 제2 서브 모델(SM2)(120)은 긍정적인 결과를 생성한 이전 콘텐츠 요청들의 세트에서의 요청들에 기초하여 콘텐츠 요청의 조건부 예상 결과를 예측한다(216에서). 조건부 예상 결과는 콘텐츠 요청의 긍정적인 결과의 크기를 나타내는 숫자 값이다. Sm2(120)는 데이터 저장소(116)에 저장된 이전 콘텐츠 요청들에 대한 피처들 및 결과들을 특정하는 데이터를 사용한다. 이 모델은 로그 가우스 회귀 모델을 사용하여 구현될 수 있다. 일부 구현예에서, 피처 레벨 X를 갖는 각 콘텐츠 요청 CR에 대해, 로그 가우스 모델은 다음 가정에 따라, CR의 예상 결과(쿼리에 응답하여 제공된 콘텐츠와의 사용자의 인터렉션을 정량화할 수 있음)를 예측한다:
여기서 Γ는 모형의 파라미터 벡터이고 ε은 매우 작은 로그 인수를 방지하기 위해 작은 양수(ε ~ 10-6)로 설정된다.
우선순위화 모델(122)은 SM1(118) 및 SM2(120)의 출력을 결합하여 우선순위 값을 생성한다. 구체적으로, 우선순위화 모델(122)은 SM1(118)에 의해 결정된 긍정적인 결과의 확률을 SM2(120)에 의해 결정된 조건부 예상 결과와 결합함으로써 우선순위 값을 결정한다(218에서). 이것은 다음 방정식을 사용하여 나타낼 수 있다.
E [인터렉션] = P(인터렉션> 0) x E [인터렉션 | 인터렉션> 0]
사용자가 모바일 디바이스 브라우저를 통해 "저렴한 세금 준비 회사"라는 단어를 포함하는 쿼리를 제출하는 상기 예에서, 우선순위화 모델은 콘텐츠 요청의 입력 피처들에 기초하여 콘텐츠 요청이 우선순위 값 65를 갖는다고 결정할 수 있다. 설명의 편의를 위해, 우선순위 값은 본 명세서에서 정수로 도시되어 있지만, 우선순위 값은 임의의 적절한 스케일(예를 들어, 통화, 시간 등)로 측정될 수 있음을 이해할 것이다.
모델의 특정 구현예가 예를 위해 위에서 논의되었지만, 예를 들어 선형 회귀 모델 및 신경망 모델과 같은 다른 적절한 모델이 사용될 수 있다.
콘텐츠 제공자(130)는 목표 손실 백분율 및 이전 요청들 세트에 대한 결과들에 기초하여 특정된 임계치를 결정한다(210에서). 콘텐츠 제공자가 특정된 임계치를 결정하는 프로세스의 세부 사항이 도 4를 참조하여 기술되며, 도 4는 특정된 임계치를 결정하기 위해 콘텐츠 제공자(130)에 의해 구현되는 예시적 프로세스(400)의 흐름도이다.
도 4를 참조하여 설명된 바와 같이, 콘텐츠 제공자는 이전 콘텐츠 요청들의 세트에서 각 요청에 대한 결과를 획득한다(402에서). 예시로서, 콘텐츠 제공자는 데이터 저장소(116)에 저장된 이전 콘텐츠 요청들의 세트에 대한 실제 결과(예를 들어, 광고 수익과 같은 수익, 취해진 사용자 행동 또는 다른 결과)에 액세스할 수 있다. 예를 들어, 예시의 목적으로, 다음과 같은 광고 수익의 10개의 이전 콘텐츠 요청들이 있다고 가정한다. 광고 수익(미국 달러로): 100, 150, 200, 50, 30, 10, 25, 400, 15, 20. 수익은 이전 콘텐츠 요청들의 실제 결과가 정량화될 수 있는 하나의 가능한 방법이라는 것을 이해할 것이다. 이전의 콘텐츠 요청들의 결과가 정량화될 수 있는 다른 방법은 사용자의 시청 시간 또는 콘텐츠의 인터렉션 시간을 포함한다.
콘텐츠 제공자(130)는 집계된 결과를 생성하기 위해 이전 콘텐츠 요청들에 대한 결과들을 집계한다(404에서). 위의 예에서, 콘텐츠 제공자(130)는 이전 콘텐츠 요청들에 대한 총 수익이 집계(예를 들어, 100 + 150 + 200 + 50 + 30 + 10 + 25 + 400 + 15 + 20)에 기초하여 $1000인 것으로 결정한다. 실제 결과들이 사용자 시청 시간을 사용하여 정량화되면, 콘텐츠 제공자(130)는 각 요청에 대한 시청 시간을 집계(합산)함으로써 이전 콘텐츠 요청들에 대한 총 시청 시간을 결정한다.
콘텐츠 제공자는 특정된 임계치를 생성하기 위해 목표 손실 백분율에 의해 집계된 결과를 스케일링한다(406에서). 미리 결정될 수 있는 목표 손실 백분율은 컴퓨팅 리소스에 대한 액세스가 거부되는 콘텐츠 요청의 비율을 특정한다. 따라서, 콘텐츠 제공자(130)는 서비스가 콘텐츠 요청의 비율로 거부되는 목표 손실 백분율을 특정함으로써 시스템의 성능을 조정할 수 있다. 위의 예에서, 콘텐츠 제공자(130)는 목표 손실률을 10%로 설정할 수 있다. 따라서 콘텐츠 제공자는 이 10% 목표 손실 백분율로 총 매출 $1000을 스케일링하여 특정된 임계치 100을 생성한다. 실제 결과들이 사용자 시청 시간을 사용하여 정량화되면, 콘텐츠 제공자(130)는 이전 콘텐츠 요청들에 대한 총 시청 시간을 10%의 목표 손실 백분율로 스케일링한다.
또한, 특정된 임계치의 계산은 다른 방식으로 수행될 수 있다. 일부 구현예에서, 콘텐츠 제공자는 이전 콘텐츠 요청들에 대한 예측 및 실제 결과들을 획득할 수 있다. 콘텐츠 제공자는 이전 콘텐츠 요청들에 대한 실제 결과들을 집계한다. 위의 예를 사용하면, 10개의 이전 콘텐츠 요청들에 대한 실제 집계 결과는 1000이다. 그 다음, 콘텐츠 제공자는 총 실제 결과를 10%의 미리 결정된 목표 손실 임계치로 스케일링함으로써 초기 임계치를 계산한다. 상기 예에서, 콘텐츠 제공자는 1000의 실제 집계된 결과를 미리 결정된 목표 손실 임계치 5%로 스케일링하여, 초기 임계치 50(즉, 5/100*1000)을 얻는다.
콘텐츠 제공자는 예측 결과들을 오름차순으로 정렬한 다음 이 순서를 사용하여 실제 결과들의 대응 세트를 획득한다. 그 다음, 실제 결과들의 목록에서 제1 콘텐츠 요청부터 시작하여, 콘텐츠 제공자는 분석된 요청들의 실제 결과들의 합계가 초기 임계치를 초과할 때까지 각 요청의 실제 결과를 추가한다. 이 시점에서, 콘텐츠 제공자는 예측된 결과들의 합이 초기 임계치를 초과하지 않은 마지막 실제 결과에 대응하는 예측된 결과를 특정된 임계치로서 선택한다.
위의 예에서, 콘텐츠 제공자는 10개의 이전 콘텐츠 요청들 각각에 대해 실제 수익[100, 150, 200, 50, 30, 10, 25, 400, 15, 20] 및 대응하는 예측 수익[100, 150, 200, 50, 30, 10, 20, 400, 15, 22]을 획득한다. 콘텐츠 제공자는 10, 15, 20, 22, 30, 50, 100, 150, 200, 400 데이터 세트를 획득하기 위해 예상 수익을 오름차순으로 정렬한다. 그 다음, 콘텐츠 제공자는 이 순서를 사용하여, 실제 데이터 세트에 대응하는 실제 수익들의 데이터 세트를 다음과 같이 획득한다: 10, 15, 25, 20, 30, 50, 100, 150, 200, 400. 그 다음 실제 수익 데이터 세트의 제1 결과부터 시작하여, 콘텐츠 제공자는 실제 수익들의 합계가 초기 임계치 50을 초과할 때까지 각 요청의 실제 수익을 추가한다. 처음 세 요청들(즉: 10 + 15 + 25) 후 실제 수익의 합계는 50이다. 실제 수익들의 합계는 실제 수익의 합계에 20의 네 번째 실제 수익이 추가된 때, 초기 임계치인 50을 초과한다(즉, 10 + 15 + 25 + 20 = 70, 50보다 큼). 따라서, 콘텐츠 제공자는 20을 특정된 임계치로서 선택한다. 이것이 실제 수익의 합이 초기 임계치인 50을 초과하지 않은 마지막 실제 수입(25)에 대응하는 예측된 수입이기 때문이다. 콘텐츠 요청의 결과가 수익 대신에 사용자의 시청 시간 또는 콘텐츠의 인터렉션 시간(또는 임의의 다른 적절한 방식)을 사용하여 정량화될 수 있다면, 상기 분석은 동일할 것이다.
특정된 임계치는(본 명세서에서 홀드아웃 요청으로 지칭되는) 새로운 콘텐츠 요청들의 세트 및 그들의 대응하는 결과에 기초하여 상술된 프로세스를 사용하여 정기적으로 업데이트될 수 있다.
백분율은 위의 예시의 목적으로 사용되었지만 목표 손실은 총 집계 손실, 특정 기간 동안의 총 손실 또는 기타 다른 손실 측정과 같은 다른 방식으로 표현될 수 있다. 또한, 임계치는 제공되는 콘텐츠, 콘텐츠 제공자 및/또는 콘텐츠가 제공되는 국가에 따라 달라질 수 있다.
도 1 및 도 2를 참조하면, 콘텐츠 제공자(130)는 우선순위 값이 특정된 임계치를 만족하는지 여부를 결정한다(212에서). 콘텐츠 제공자(130)는 우선순위화 모델(122)에 의해 생성된 우선순위 값 및 특정된 임계치를 제한 엔진(124)에 입력한다. 우선순위 값 및 특정된 임계치에 기초하여, 제한 엔진(124)은 콘텐츠 요청(104)에 응답하는데 필요한 컴퓨팅 리소스에 대한 액세스를 제공할지 여부를 평가한다. 상기 예에서, 제한 엔진(124)은 65의 우선순위 값(우선순위화 모델(122)에 의해 생성됨)을 특정된 임계치 100과 비교한다.
제한 엔진(124)이 우선순위 값이 특정된 임계치를 만족하지 않는다고 결정하면, 제한 엔진은 요청에 응답하는데 필요한 컴퓨팅 리소스에 대한 액세스를 거부한다(222에서). 위의 예에서 우선순위 값 65는 특정된 임계치 100을 만족하지 않기 때문에, 조절 엔진은 콘텐츠 요청에 대한 광고 목록을 식별하는데 필요한 컴퓨팅 리소스에 대한 액세스를 거부한다.
우선순위 값이 특정된 임계치를 만족하지 않는 것으로 결정되면, 제한 엔진(124)은 콘텐츠 요청(104)을 프로세싱하지 않도록 콘텐츠 서버(126)에 통지할 수 있다. 일부 구현예에서, 제한 엔진(124)은 콘텐츠 요청(104), 추출된 피처들 및 콘텐츠 요청에 응답하기 위해 컴퓨팅 리소스에 대한 액세스를 제공할지에 관한 "아니오" 표시자를 포함하는 메시지를 콘텐츠 서버(126)에 송신할 수 있다. 이 메시지를 수신하면, 콘텐츠 서버(126)는 콘텐츠 요청(104)을 무시하고, 응답(106)에서 "액세스 거부"로 클라이언트 디바이스(102)에 응답할 수 있다. 결과적으로, 클라이언트 디바이스(102)는 단순히 어떤 콘텐츠도 디스플레이하지 않을 수 있다. 콘텐츠 서버에게 콘텐츠 요청을 프로세싱하지 않도록 알리는 다른 방법은 콘텐츠 서버가 콘텐츠 요청을 프로세싱하지 못하게 하는 데이터 플래그를 설정하거나 단순히 콘텐츠 서버가 콘텐츠 요청을 프로세싱하도록 지시하지 않는 것을 포함한다(예를 들어, 콘텐츠 서버의 기본 설정이 명시적으로 프로세싱할 것을 지시하지 않는 한 콘텐츠 요청들을 프로세싱하기 않는 것인 경우).
반면에, 제한 엔진(124)이 우선순위 값이 특정된 임계치를 만족한다고 결정하면, 제한 엔진은 요청에 응답하는데 필요한 컴퓨팅 리소스에 대한 액세스를 제공한다(220에서). 위의 예에서, 우선순위 값이 특정된 임계치 100을 만족하거나 초과한 경우, 제한 엔진은 콘텐츠 요청에 응답하여 콘텐츠를 제공하는데 필요한 컴퓨팅 리소스에 대한 액세스를 제공할 것이다.
일부 구현예에서, 우선순위 값이 특정된 임계치를 만족한다고 결정하면, 제한 엔진(124)은 콘텐츠 요청(104)을 프로세싱하도록 콘텐츠 서버(126)에 통지할 수 있다. 제한 엔진(124)은 콘텐츠 요청(104), 추출된 피처들 및 이 요청에 응답하기 위해 컴퓨팅 리소스에 대한 액세스를 제공할지 여부에 관한 "예" 표시자를 포함하는 메시지를 콘텐츠 서버(126)에 송신할 수 있다. 이 메시지를 수신하면, 콘텐츠 서버(126)는 콘텐츠 요청(104)에 응답하기 위해 적절한 콘텐츠(예를 들어, 검색 결과)를 식별하기 위해 컴퓨팅 리소스를 이용한다. 그 다음, 콘텐츠 서버(126)는 이 콘텐츠를 응답(106)으로 클라이언트 디바이스(102)에 제공한다. 결과적으로, 검색 엔진의 검색 결과의 경우, 클라이언트 디바이스(102)는 검색된 검색 결과를 디스플레이한다. 콘텐츠 서버에게 콘텐츠 요청을 프로세싱하도록 알리는 다른 방법은 콘텐츠 요청을 프로세싱하도록 콘텐츠 서버를 트리거링하는 데이터 플래그를 설정하거나 단순히 콘텐츠 서버에 아무런 지시도 송신하지 않는 것을 포함한다(예를 들어, 콘텐츠 서버의 기본 설정이 명시적으로 프로세싱하지 않을 것을 지시하지 않는 한 콘텐츠 요청들을 프로세싱하는 것인 경우).
도 1 및 도 2를 참조하여 전술한 바와 같이, 우선순위화 모델은 이전 콘텐츠 요청들의 세트를 이용하여 트레이닝되고, 이전 콘텐츠 요청들의 세트에 기초하여 특정한 콘텐츠 요청에 대한 우선순위 값을 생성한다. 일부 구현예에서, 우선순위화 모델은 도 3을 참조하여 설명된 바와 같이, 새로운 콘텐츠 요청들의 세트를 사용하여 규칙적인 간격으로 업데이트된다.
도 3은 우선순위화 모델(122)을 업데이트하기 위해 콘텐츠 제공자(130)에 의해 구현되는 예시적 프로세스(300)의 흐름도이다.
클라이언트 디바이스(102)로부터 특정한 콘텐츠 요청을 수신한 후(도 2를 참조하는 프로세싱) 또는 언제든지, 콘텐츠 제공자(130)는 복수의 클라이언트 디바이스들로부터 수신된 새로운 콘텐츠 요청들의 세트를 홀드아웃 요청들으로서 식별할 수 있다(302에서).
이러한 홀드아웃 요청들에 대해, 콘텐츠 제공자(130)는 홀드아웃 요청들에 대한 임의의 우선순위 값에 관계없이, 필요한 컴퓨팅 리소스에 대한 액세스를 제공한다(304에서). 일부 구현예에서, 피처 추출기(112) 컴포넌트가 홀드아웃 요청들로부터 피처들을 추출한 후, 피처 추출기는 추출된 피처들 및 대응하는 홀드아웃 요청들을 콘텐츠 서버(126), 우선순위화 모델(122) 및 데이터 저장소(116)에 병렬로 송신한다.
우선순위화 모델(122)로 송신된 홀드아웃 요청들에 대해, 우선순위화 모델은 우선순위 값을 결정하고(도 1 및 2를 참조하여 전술한 바와 같이), 이러한 우선순위 값을 데이터 저장소(116)에 저장한다.
피처 추출기(112)가 콘텐츠 서버(126)에 직접 송신하는 홀드아웃 요청들에 대해, 콘텐츠 서버(126)는 홀드아웃 요청들의 추출된 피처들에 대한 콘텐츠를 식별하기 위해 컴퓨팅 리소스를 소비한다. 홀드아웃 요청들의 경우, 콘텐츠 서버(126)는 콘텐츠 요청을 프로세싱할지 여부에 관하여 제한 엔진(124)으로부터의 어떠한 메시지도 요구하지 않는다. 예를 들어, 피처 추출기(112)가 추출된 피처들을 콘텐츠 서버에 직접 송신하는 경우, "홀드아웃"의 태그 식별자를 또한 포함할 수 있으며, 이는 콘텐츠 서버(126)가 제한 엔진(124)으로부터 임의의 명령을 수신하지 않고 동작하게 할 수 있다.
콘텐츠 제공자(130)는 홀드아웃 요청들에 응답하여 제공되는 콘텐츠에 대한 실제 결과를 모니터링한다(306). 일부 구현예에서, 우선순위 분석기(114)는 콘텐츠 서버(126)에 의해 프로세싱된 각각의 홀드아웃 요청들의 실제 결과를 모니터링한다. 예를 들어, 홀드아웃 요청들이 프로세싱될 때, 우선순위 분석기(114)는 콘텐츠 서버(126)에 의해 제공되는 콘텐츠를 클라이언트 디바이스(102)로 전송되기 전에 전달하는 콘텐츠 서버(126)에서 실행되는 에이전트를 가질 수 있다. 우선순위 분석기(114)는 콘텐츠 소스(예를 들어, 콘텐츠 요청에 응답하여 제공되는 콘텐츠를 호스팅할 수 있는 서버) 및 세션 식별자(즉, 콘텐츠가 제공되었던 특정 콘텐츠 요청(102)에 대한 식별자)를 콘텐츠에 포함된 메타데이터로부터 추출한다. 그 다음, 우선순위 분석기(114)의 에이전트는 특정한 세션 식별자에 대응하는 실제 결과 데이터를 획득하기 위해 콘텐츠 소스에 쿼리할 수 있다. 콘텐츠 소스로부터 실제 결과 데이터를 수신하면, 우선순위 분석기(114)는 홀드아웃 요청들 각각에 대한 이 데이터를 데이터 저장소(116)에 저장한다.
콘텐츠 제공자(130)는 실제 결과들에 기초하여 우선순위화 모델을 업데이트한다(308에서). 이것은 3 단계로 달성될 수 있다. 먼저, 콘텐츠 제공자(130)는 홀드아웃 요청들에 응답하여 제공된 콘텐츠에 대한 우선순위 값을 획득한다(310에서). 일부 구현예에서, 우선순위 분석기(114)는 데이터 저장소(116)에 저장된 홀드아웃 요청들에 대한 우선순위 값들을 획득한다. 예를 들어, 우선순위 분석기(114)는 홀드아웃 요청들의 우선순위 값에 대해 데이터 저장소(116)에 쿼리할 수 있다. 우선순위 분석기는 각각의 홀드아웃 요청들에 대한 고유 식별자들을 데이터 저장소(116)에 송신할 수 있으며, 데이터 저장소는 상이한 콘텐츠 요청들에 대한 식별자 및 이들 요청들 각각에 대한 대응하는 데이터를 저장할 수 있다. 따라서, 우선순위 분석기(114)로부터 쿼리를 수신하면, 데이터 저장소(116)는 식별자를 사용하여 데이터 저장소(116)에 저장된 대응하는 우선순위 값 데이터를 찾는다.
콘텐츠 제공자(130)는 우선순위 값들을 실제 결과들과 비교하고(312에서), 우선순위 값들과 실제 결과들 사이의 차이에 기초하여 우선순위화 모델을 조정한다(314에서). 일부 구현예에서, 우선순위 분석기(114)는 데이터 저장소(116)로부터 홀드아웃 요청들 각각에 대한 실제 결과들을 획득한다. 우선순위 분석기(114)는 홀드아웃 요청들에 대한 우선순위 값들과 실제 결과들을 비교한다. 예를 들어, 우선순위 분석기(114)는 각각의 홀드아웃 요청들에 대한 실제 결과들과 우선순위 값들 사이의 차이를 결정한다. 실제 결과들 및/또는 우선순위 값들은 그들의 비교를 가능하게 하기 위해 스케일링될 수 있다(예를 들어, 숫자 값으로 곱해질 수 있다). 일부 구현예에서, 우선순위 분석기(114)는 우선순위 값들과 실제 결과들 사이의 차이에 기초하여 평균 차이를 생성한 다음, 이 평균 차이를 사용하여 우선순위화 모델을 업데이트할 수 있다. 예를 들어, 우선순위 분석기(114)는 우선순위 값과 실제 결과 사이의 평균 차이가 -50이라고 결정할 수 있다. 다시 말해서, 우선순위 분석기(114)는 실제 결과가 평균적으로 우선순위 값보다 50이 작다 것으로 결정할 수 있다. 콘텐츠 제공자(130)가 우선순위화 모델(122)을 업데이트할 수 있는 한 가지 방법은 출력을 50만큼 스케일링하는 것이다. 예를 들어, 콘텐츠 제공자(130)는 현재 우선순위화 모델의 최종 결정된 출력에서 50을 뺄 수 있다. 따라서, 현재 모델이 100의 우선순위 값을 생성한 경우, 업데이트된 모델은 50의 우선순위 값(즉, 100-50)을 생성할 것이다.
콘텐츠 제공자(130)은 목표 손실 백분율과 컴퓨팅 리소스에 대한 액세스가 거부된 드롭된 요청들의 수 사이의 관계에 기초하여 우선순위화 모델을 더 조정할 수 있다(316). 예를 들어, 시간이 지남에 따라 콘텐츠 제공자(130)에 의해 수신된 콘텐츠 요청에 기초하여, 콘텐츠 제공자(130)는 컴퓨팅 리소스에 대한 액세스가 거부된 드롭된 요청들 수의 분포를 특정한 특정 목표 손실 백분율로 유지할 수 있다.
예를 들어, 현재 요청 드롭율이 50% 일 수 있지만, 콘텐츠 제공자(130)는 분포에 기초하여 10%의 목표 손실 백분율에 대해 원하는 드롭된 요청들의 수가 70%에 있어야 한다고 결정할 수 있다. 콘텐츠 제공자(130)는 우선순위화 모델을 조정함으로써 이러한 최적 요청 드롭율을 달성할 수 있다. 이는 10 % 목표 손실 백분율 및 우선순위화 모델에 의해 결정된 다음의 우선순위 값 15, 20, 25, 30, 35, 40, 45, 50, 55 및 60을 가지는 10 개의 콘텐츠 요청들의 샘플 데이터에 기초하여 특정된 임계치 37.5를 사용하여 설명된다. 특정된 임계치 37.5를 사용하면, 우선순위 값이 37.5 미만인 처음 5개의 요청이 드롭된다.
이 예에서, 10% 목표 손실률은 50%의 요청 드롭 비율(즉, 총 10개의 쿼리 중 5개의 쿼리 드롭됨)을 초래한다. 동일한 목표 손실 임계치에서 요청 드롭률을 50%에서 70%로 증가시키는 것은 우선순위화 모델의 출력을 10으로 스케일링함으로써 달성될 수 있다. 결과적으로 10개의 콘텐츠 요청들의 샘플 데이터는 이제 5, 10, 15, 20, 25, 30, 35, 40, 45 및 50의 업데이트된 우선순위 값을 갖는다. 이제 특정된 임계치 37.5를 적용하면 70%의 요청 드롭 비율이 달성된다. 이는 우선순위 값이 37.5 미만인 처음 7개의 요청이 드롭되기 때문이다.
도 5는 상기 기술된 동작들을 수행하는데 사용될 수 있는 예시적 컴퓨터 시스템(500)의 블록도이다. 시스템(500)은 프로세서(510), 메모리(520), 저장 디바이스(530) 및 입력/출력 디바이스(540)를 포함한다. 컴포넌트들(510, 520, 530 및 540) 각각은 예를 들면, 시스템 버스(550)를 사용하여 상호 연결될 수 있다. 프로세서(510)는 시스템(500) 내에서 실행하기 위한 명령어들을 프로세싱할 수 있다. 일부 구현예에서, 프로세서(510)는 단일-스레드 프로세서이다. 다른 구현예에서, 프로세서(510)는 멀티-스레드 프로세서이다. 프로세서(510)는 메모리(520) 또는 저장 디바이스(530)에 저장된 명령어들을 프로세싱할 수 있다.
메모리(520)는 시스템(500) 내에 정보를 저장한다. 일 구현예에서, 메모리(520)는 컴퓨터 판독가능 매체이다. 일부 구현예에서, 메모리(520)는 휘발성 메모리 유닛이다. 다른 구현예에서, 메모리(520)는 비휘발성 메모리 유닛이다.
저장 디바이스(530)는 시스템(500)에 대한 대형 저장소를 제공할 수 있다. 일부 구현예에서, 저장 디바이스(530)는 컴퓨터 판독가능 매체이다. 다양한 상이한 구현예에서, 저장 디바이스(530)는 예를 들면, 하드 디스크 디바이스, 광학 디스크 디바이스, 다수의 컴퓨팅 디바이스들(예를 들면, 클라우드 저장 디바이스)에 의해 네트워크를 통해 공유되는 저장 디바이스 또는 일부 기타 대용량 저장 디바이스를 포함할 수 있다.
입력/출력 디바이스(540)는 시스템(500)에 대한 입력/출력 동작들을 제공한다. 일부 구현예에서, 입력/출력 디바이스(540)는 네트워크 인터페이스 디바이스 예를 들어, 이더넷 카드, 직렬 통신 디바이스(예를 들어, RS-232 포트) 및/또는 무선 인터페이스 디바이스(예를 들어, 802.11 카드) 중 하나 이상을 포함할 수 있다. 다른 구현예에서, 입력/출력 디바이스는 입력 데이터를 수신하고 출력 데이터를 다른 입력/출력 디바이스들 예를 들어, 키보드, 프린터 및 디스플레이 디바이스들(560)에 송신하도록 구성된 드라이버 디바이스들을 포함할 수 있다. 그러나, 모바일 컴퓨팅 디바이스들, 모바일 통신 디바이스들, 셋톱 박스 텔레비전 클라이언트 디바이스들 등과 같은 다른 구현예들도 사용될 수 있다.
예시적 프로세싱 시스템이 도 5에서 기술되었지만, 본 발명의 구현예들 및 본 명세서에 기술된 기능적 동작들은 본 발명에 개시된 구조들 및 그들의 구조적 균등물들 또는 그들 중 하나 이상의 조합들을 포함하는 다른 유형의 디지털 전자 회로에서, 또는 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어에서 구현될 수 있다.
본 발명의 실시예들과 본 명세서에 기술된 동작들은 본 발명에 개시된 구조들 및 그들의 구조적 균등물들 또는 그들 중 하나 이상의 조합들을 포함하는 디지털 전자회로 또는 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어에서 구현될 수 있다. 본 명세서에 기술된 본 발명의 실시예들은 하나 이상의 컴퓨터 프로그램들로서 구현될 수 있다. 즉, 데이터 프로세싱 장치에 의해 실행 또는 데이터 프로세싱 장치의 동작을 제어하기 위한 컴퓨터 저장 매체(또는 매체들)에 인코딩된 컴퓨터 프로그램 명령어들의 하나 이상의 모듈들. 대안적으로 또는 추가로, 프로그램 명령어들은 데이터 프로세싱 장치에 의해 실행하기 위한 적절한 수신기 장치에 전송하기 위한 정보를 인코딩하기 위해 생성된 인공적으로 생성된 전파된 신호 즉, 기계-생성 전기, 광학 또는 전자기적 신호에 인코딩될 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 저장 디바이스, 컴퓨터 판독가능 저장 기판, 랜덤 또는 직렬 엑세스 메모리 어레이 또는 디바이스 또는 그들 중 하나 이상의 조합이거나 그에 포함될 수 있다. 또한, 컴퓨터 저장 매체는 전파된 신호가 아니지만, 컴퓨터 저장 매체는 인공적으로 생성된 전파된 신호에 인코딩된 컴퓨터 프로그램 명령어들의 소스 또는 목적지일 수 있다. 또한, 컴퓨터 저장 매체는 하나 이상의 별개의 물리적 컴포넌트들 또는 매체(예를 들면, 다수의 CD들, 디스크들, 또는 다른 저장 디바이스들)이거나 또는 그에 포함될 수 있다.
본 명세서에 기술된 동작들은 하나 이상의 컴퓨터 판독가능 저장 디바이스들에 저장된 또는 다른 소스들로부터 수신된 데이터에서 데이터 프로세싱 장치에 의해 수행되는 동작들로서 구현될 수 있다.
용어 "데이터 프로세싱 장치"는 예시로서 프로그래머블 프로세서, 컴퓨터, 시스템 온 칩 또는 앞서 언급된 것들 중 다수의 것들 또는 조합들을 포함하는 데이터를 프로세싱하기 위한 모든 종류의 장치, 디바이스들 및 기계들을 포함한다. 상기 장치는 특수 목적 논리 회로, 예를 들어 FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit)을 포함할 수 있다. 또한, 장치는 하드웨어 이외에 문제의 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드, 예를 들어 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 크로스-플랫폼 런타임(cross-platform runtime) 실행 환경, 가상 머신 또는 그들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다. 장치 및 실행 환경은 웹 서비스들, 분산 컴퓨팅 및 그리드 컴퓨팅 인프라와 같은 다양한 컴퓨팅 모델 인프라를 실현할 수 있다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 어플리케이션, 스크립트 또는 코드로도 알려져 있음)은 컴파일된 또는 인터프리트된 언어들, 선언적 또는 절차적 언어들을 포함하는 임의의 형태의 프로그래밍 언어로 작성될 수 있으며, 독립 실행형 프로그램으로서 또는 모듈, 컴포넌트, 서브루틴, 오브젝트로서 또는 컴퓨팅 환경에서 사용하기에 적합한 기타 단위를 포함하는 임의의 형태로 배포될 수 있다. 컴퓨터 프로그램은 파일 시스템의 파일에 대응할 수 있지만, 반드시 그런 것은 아니다. 프로그램은 다른 프로그램들이나 데이터, 예를 들어, 마크업 언어 문서에 저장된 하나 이상의 스크립트들을 가지는 파일의 부분에, 문제되는 프로그램 전용 단일의 파일에 또는 다수의 조정된 파일들, 예를 들어, 하나 이상의 모듈들, 서브프로그램 또는 코드의 일부를 저장하는 파일들에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터 또는 하나의 사이트에 위치되어 있거나 다수의 사이트들에 걸쳐서 분산되어 있고 통신 네트워크에 의해 상호연결된 다수의 컴퓨터들에서 실행되도록 배포될 수 있다.
본 명세서에 기술된 프로세스들 및 논리 흐름들은 입력 데이터를 동작하고 출력을 생성함으로써 액션들을 수행하기 위해 하나 이상의 컴퓨터 프로그램들을 실행하는 하나 이상의 프로그래머블 프로세서들에 의해 수행될 수 있다. 프로세스들 및 논리 흐름들은 또한 FPGA 또는 ASIC와 같은 특수 목적 논리 회로에 의해 수행될 수 있고, 장치는 또한 특수 목적 논리 회로로서 구현될 수 있다.
컴퓨터 프로그램의 실행에 적절한 프로세서들은, 예시로서, 범용 및 전용 마이크로프로세서들을 포함한다. 일반적으로, 프로세서는 읽기-전용 메모리 또는 랜덤 액세스 메모리 또는 둘 모두로부터 명령어들 및 데이터를 수신할 것이다. 컴퓨터의 필수 엘리먼트들은 명령어들에 따라 액션들을 수행하기 위한 프로세서 및 명령어들 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스들이다. 일반적으로, 컴퓨터는 데이터를 저장하기 위한 하나 이상의 대형 저장 디바이스들 예를 들면, 자기적, 자기-광학 디스크들 또는 광학적 디스크들 또한 포함하거나 또는 그로부터 데이터를 수신하거나 그에 데이터를 전송하기 위해 동작적으로 결합될 수 있다. 그러나, 컴퓨터는 상기 디바이스들을 반드시 가져야하는 것은 아니다. 추가로, 컴퓨터는 다른 디바이스, 예를 들어, 몇 가지만 나열하면, 모바일 전화, 개인 휴대 정보 단말기(PDA), 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, GPS 수신기 또는 휴대용 저장 디바이스 예를 들어, 범용 직렬 버스(USB) 플래시 드라이브에 내장될 수 있다. 컴퓨터 프로그램 명령어들 및 데이터를 저장하기에 적합한 디바이스들은 예를 들어, EPROM, EEPROM 및 플래시 메모리 디바이스들과 같은 반도체 메모리 디바이스들; 예를 들어, 내부 하드 디스크들 또는 이동식 디스크들과 같은 자기 디스크들; 및 CD-ROM 및 DVD-ROM 디스크들을 포함하는 모든 형태의 비휘발성 메모리, 매체 및 메모리 디바이스들을 포함한다. 프로세서 및 메모리는 특수 목적 논리 회로에 의해 보충되거나 그 안에 통합될 수 있다.
사용자와의 인터렉션을 제공하기 위해, 본 명세서에서 기술된 본 발명의 실시예들은 사용자에게 정보를 디스플레이하기 위해 예를 들어, CRT(cathode ray tube) 또는 LCD(liquid crystal display) 모니터와 같은 디스플레이 디바이스 및 사용자가 컴퓨터에 입력을 제공할 수 있는 키보드 및 포인팅 디바이스 예를 들어, 마우스 또는 트랙볼을 갖는 컴퓨터에서 구현될 수 있다. 다른 종류의 디바이스들도 사용자와의 인터렉션을 제공하는데 사용될 수 있다. 예를 들어, 사용자에게 제공되는 피드백은 시각 피드백, 청각 피드백 또는 촉각 피드백과 같은 임의의 형태의 감각적 피드백일 수 있고, 사용자로부터의 입력은 음향, 음성 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다. 추가로, 컴퓨터는 사용자에 의해 사용되는 디바이스에 문서를 송수신함으로써 예를 들어, 웹 브라우저로부터 수신된 요청에 응답하여, 사용자의 사용자 디바이스상의 웹 브라우저에 웹 페이지를 전송함으로써 사용자와 인터렉션할 수 있다.
본 명세서에서 기술된 발명의 실시예는 예를 들어 데이터 서버와 같은 백엔드 컴포넌트, 어플리케이션 서버와 같은 미들웨어 컴포넌트 또는 그래픽 사용자 인터페이스를 가지는 사용자 컴퓨터 또는 사용자가 본 명세서에 기술된 본 발명의 구현예와 인터렉션할 수 있는 웹 브라우저와 같은 프론트엔드 컴포넌트 또는 하나 이상의 상기 백엔드, 미들웨어 또는 프론트엔드 컴포넌트들의 임의의 조합을 포함하는 컴퓨팅 시스템에서 구현될 수 있다. 시스템의 컴포넌트들은 디지털 데이터 통신의 임의의 형태 또는 매체, 예를 들어 통신 네트워크에 의해 상호연결될 수 있다. 통신 네트워크들의 예는 근거리 통신망("LAN") 및 광역 통신망("WAN"), 인터-네트워크(예를 들어, 인터넷) 및 피어투피어 네트워크(예를 들어, 애드혹 피어투피어 네트워크)를 포함한다.
컴퓨팅 시스템은 사용자들 및 서버들을 포함할 수 있다. 사용자와 서버는 일반적으로 서로 멀리 떨어져 있으며, 일반적으로 통신 네트워크를 통해 인터렉션한다. 사용자와 서버의 관계는 각각의 컴퓨터에서 실행되고 서로 사용자-서버 관계를 갖는 컴퓨터 프로그램에 의해 발생한다. 일부 실시예에서, 서버는(예를 들어, 사용자 디바이스와 인터렉션하는 사용자에게 데이터를 디스플레이하고 사용자 입력을 수신하기 위해) 사용자 디바이스에 데이터(예를 들어, HTML 페이지)를 전송한다. 사용자 디바이스에서 생성된 데이터(예를 들어, 사용자 인터렉션의 결과)는 서버에서 사용자 디바이스로부터 수신될 수 있다.
본 명세서는 많은 특정 구현 세부내용을 포함하지만, 이들은 임의의 발명의 범위 또는 청구될 수 있는 범위에 대한 제한으로서 해석되어서는 안되며, 오히려 특정한 발명의 특정한 실시예에 특정한 구성들에 대한 설명으로 해석되어야 한다. 별개의 실시예의 맥락에서 본 명세서에서 기술되는 일정 구성들은 또한 단일 실시예에서 조합하여 구현될 수 있다. 반대로, 단일 실시예의 맥락에서 기술된 다양한 구성들은 또한 다수의 실시예에서 개별적으로 또는 임의의 적합한 서브 조합으로 구현될 수 있다. 게다가, 구성들은 일정 조합으로 동작하고 심지어 초기적으로 그렇게 청구되는 것으로서 상기에서 기술될 수 있지만, 청구된 조합으로부터의 하나 이상의 구성들은 일부 경우, 조합으로부터 제거될 수 있고, 청구된 조합은 서브 조합 또는 서브 조합의 변형으로 안내될 수 있다.
유사하게, 동작들이 특정한 순서로 도면에서 도시되었지만, 이는 상기 동작들이 도시된 특정한 순서로 또는 시계열적 순서로 수행되어야 함을 요구하는 것으로서 또는 모든 도시된 동작들이 수행되어야 하는 것으로 이해되어서는 안된다. 특정 환경에서, 멀티태스킹과 병렬 프로세싱은 이점이 있다. 게다가, 상기 기술된 실시예에서 다양한 시스템 컴포넌트들의 분리는 모든 실시예에서 그러한 분리가 필요한 것으로서 이해되어서는 안되며, 일반적으로 기술된 프로그램 컴포넌트들 및 시스템들은 단일의 소프트웨어 제품에 함께 통합되거나 다수의 소프트웨어 제품들에 패키징될 수 있다고 이해되어야 한다.
따라서, 본 발명의 특정한 실시예들이 기술되었다. 다른 실시예들도 다음의 청구항들의 범위 내에 있다. 일부 경우에, 청구항들에서 기재된 액션들은 상이한 순서로 수행되고 여전히 원하는 결과들을 달성할 수 있다. 추가로, 첨부 도면들에 도시된 프로세스들은 원하는 결과들을 달성하기 위해 특정한 도시된 순서, 또는 시계열적 순서를 반드시 필요로 하지 않는다. 특정 구현예에서, 멀티태스킹과 병렬 프로세싱은 이점이 있다.
Claims (12)
- 컴퓨터로 구현되는 방법으로서,
클라이언트 디바이스로부터 콘텐츠 요청을 수신하는 단계;
상기 클라이언트 디바이스에 의해 제출된 상기 콘텐츠 요청의 피처들을 우선순위화 모델(prioritization model)에 입력하는 단계, 상기 우선순위화 모델은 이전 콘텐츠 요청들의 세트와 상기 이전 콘텐츠 요청들의 세트에 대한 실제 결과들의 대응하는 세트를 사용하여 트레이닝되며, 상기 실제 결과들은 상기 이전 콘텐츠 요청들의 세트에 대한 긍정적 결과들 및 부정적 결과들을 포함하며, 상기 긍정적 결과는 콘텐츠 요청에 응답하여 제공된 콘텐츠와의 사용자 인터렉션을 포함하며;
상기 우선순위화 모델로부터, 상기 우선순위화 모델에 입력된 피처들에 기초하여, 상기 콘텐츠 요청에 대한 우선순위 값(priority value)을 획득하는 단계; 및
상기 콘텐츠 요청에 대한 상기 우선순위 값이 특정된 임계치를 만족하는지 여부에 기초하여, 상기 콘텐츠 요청에 응답하기 위한 컴퓨팅 리소스에 대한 액세스를 제한하는 단계, 상기 제한하는 단계는:
상기 우선순위화 모델이 상기 특정된 임계치를 만족하는 우선순위 값을 출력할 때, 상기 콘텐츠 요청에 응답하기 위해 상기 컴퓨팅 리소스에 대한 액세스를 제공하는 것; 및
상기 우선순위화 모델이 상기 특정된 임계치를 만족시키지 못하는 우선순위화 모델을 출력할 때 컴퓨팅 리소스에 대한 액세스를 거부하는 것을 포함하며,
상기 콘텐츠 요청의 수신 후 수신된 후속 콘텐츠 요청들의 세트를 홀드아웃 요청(holdout request)들로서 식별하는 단계;
상기 홀드아웃 요청들에 대한 임의의 우선순위 값에 관계없이 상기 홀드아웃 요청들에 응답하는데 필요한 컴퓨팅 리소스에 대한 액세스를 제공하는 단계;
상기 홀드아웃 요청에 응답하여 제공되는 콘텐츠에 대한 실제 결과들을 모니터링하는 단계; 및
상기 실제 결과들에 기초하여, 상기 우선순위화 모델을 업데이트하는 단계를 포함하는, 컴퓨터로 구현되는 방법. - 청구항 1에 있어서, 상기 수신된 콘텐츠 요청으로부터 상기 피처들을 추출하는 단계를 더 포함하는, 컴퓨터로 구현되는 방법.
- 청구항 1에 있어서, 상기 우선순위 값을 획득한 후, 상기 이전 콘텐츠 요청들의 세트 및 목표 손실 백분율에 응답하여 제공된 콘텐츠에 대한 실제 결과들에 기초하여 상기 특정된 임계치를 결정하는 단계를 더 포함하는, 컴퓨터로 구현되는 방법.
- 삭제
- 청구항 1에 있어서, 상기 우선순위화 모델을 업데이트하는 단계는:
상기 홀드아웃 요청들에 응답하여 제공된 콘텐츠에 대한 우선순위 값들을 획득하는 것;
상기 우선순위 값들과 실제 결과들을 비교하는 것; 및
상기 우선순위 값들과 실제 결과들 간의 차이에 기초하여 상기 우선순위화 모델을 조정하는 것을 포함하는, 컴퓨터로 구현되는 방법. - 청구항 5에 있어서,
상기 우선순위화 모델을 업데이트하는 단계는 목표 손실 백분율과 상기 컴퓨팅 리소스에 대한 액세스가 거부된 드롭된 콘텐츠 요청들의 백분율 사이의 관계에 기초하여 상기 우선순위화 모델을 조정하는 것을 포함하는, 컴퓨터로 구현되는 방법. - 청구항 6에 있어서, 상기 우선순위화 모델로부터, 상기 우선순위화 모델에 입력된 피처들에 기초하여, 상기 콘텐츠 요청에 대한 우선순위 값을 획득하는 단계는:
상기 우선순위화 모델을 사용하여, 상기 콘텐츠 요청이 이전 콘텐츠 요청들의 세트에서 콘텐츠 요청들에 대한 결과들에 기초하여 긍정적 결과를 생성할 확률을 결정하는 것;
상기 우선순위화 모델을 사용하여, 상기 이전 콘텐츠 요청들에 의해 생성된 긍정적 결과들에 기초하여 상기 콘텐츠 요청에 대한 긍정적 결과의 예상 크기를 결정하는 것; 및
상기 우선순위 값을 생성하기 위해 상기 콘텐츠 요청이 긍정적 결과를 생성할 확률을 상기 긍정적 결과의 예상 크기와 결합하는 것을 포함하는 컴퓨터로 구현되는 방법. - 청구항 3에 있어서, 상기 이전 콘텐츠 요청들의 세트 및 상기 목표 손실 백분율에 응답하여 제공된 콘텐츠에 대한 실제 결과들에 기초하여 상기 특정된 임계치를 결정하는 단계는:
상기 이전 콘텐츠 요청들의 세트에서 각 요청에 대한 결과를 획득하는 것;
상기 이전 콘텐츠 요청들의 세트에 대한 집계된 결과를 생성하기 위해 상기 이전 콘텐츠 요청들의 세트에서 각 요청에 대한 상기 결과를 집계하는 것; 및
상기 특정된 임계치를 생성하기 위해 상기 집계된 결과를 목표 손실 백분율로 스케일링하는 것을 증가시키거나 감소시키는 것을 포함하는, 컴퓨터로 구현되는 방법. - 청구항 1에 있어서,
상기 실제 결과들에 기초하여, 상기 우선순위화 모델을 업데이트한 후, 상기 홀드아웃 요청들 및 목표 손실 백분율에 응답하여 제공된 콘텐츠에 대한 결과들에 기초하여 상기 특정된 임계치를 업데이트하는 단계를 더 포함하는, 컴퓨터로 구현되는 방법. - 청구항 9에 있어서, 상기 홀드아웃 요청들 및 상기 목표 손실 백분율에 응답하여 제공된 콘텐츠에 대한 결과들에 기초하여 상기 특정된 임계치를 업데이트하는 단계는:
상기 홀드아웃 요청들에서 각 요청에 대한 결과를 획득하는 것;
상기 홀드아웃 요청들에 대한 집계된 결과를 생성하기 위해 상기 홀드아웃 요청들에서 각 요청에 대한 결과를 집계하는 것; 및
상기 특정된 임계치를 생성하기 위해 상기 집계된 결과를 목표 손실 백분율로 스케일링하는 것을 증가시키거나 감소시키는 것을 포함하는, 컴퓨터로 구현되는 방법. - 시스템으로서, 상기 시스템은 명령어를 저장하는 하나 이상의 메모리 디바이스와 상기 하나 이상의 메모리 디바이스와 인터렉션하도록 구성되는 하나 이상의 데이터 프로세싱 장치를 포함하며, 상기 명령어의 실행시 청구항 1, 2, 3, 5 내지 10 중 어느 한 항에 기재된 방법을 수행하는, 시스템.
- 명령어를 저장하는 컴퓨터 판독가능 저장 매체로서, 상기 명령어는 하나 이상의 데이터 프로세싱 장치에 의해 실행될 때, 상기 하나 이상의 데이터 프로세싱 장치로 하여금 1, 2, 3, 5 내지 10 중 어느 한 항에 기재된 방법을 수행하게 하는, 컴퓨터 판독가능 저장 매체.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2019/029292 WO2020219064A1 (en) | 2019-04-26 | 2019-04-26 | Efficient use of computing resources in responding to content requests |
KR1020207007383A KR102364970B1 (ko) | 2019-04-26 | 2019-04-26 | 콘텐츠 요청들에 대응한 컴퓨팅 리소스의 효율적 사용 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020207007383A Division KR102364970B1 (ko) | 2019-04-26 | 2019-04-26 | 콘텐츠 요청들에 대응한 컴퓨팅 리소스의 효율적 사용 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20220025248A KR20220025248A (ko) | 2022-03-03 |
KR102464339B1 true KR102464339B1 (ko) | 2022-11-07 |
Family
ID=66655437
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227004918A KR102464339B1 (ko) | 2019-04-26 | 2019-04-26 | 콘텐츠 요청들에 대응한 컴퓨팅 리소스의 효율적 사용 |
KR1020207007383A KR102364970B1 (ko) | 2019-04-26 | 2019-04-26 | 콘텐츠 요청들에 대응한 컴퓨팅 리소스의 효율적 사용 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020207007383A KR102364970B1 (ko) | 2019-04-26 | 2019-04-26 | 콘텐츠 요청들에 대응한 컴퓨팅 리소스의 효율적 사용 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11366698B2 (ko) |
EP (1) | EP3752932A1 (ko) |
JP (1) | JP7013569B2 (ko) |
KR (2) | KR102464339B1 (ko) |
CN (1) | CN112154433A (ko) |
WO (1) | WO2020219064A1 (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11570176B2 (en) * | 2021-01-28 | 2023-01-31 | Bank Of America Corporation | System and method for prioritization of text requests in a queue based on contextual and temporal vector analysis |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150269156A1 (en) * | 2014-03-21 | 2015-09-24 | Microsoft Corporation | Machine-assisted search preference evaluation |
US20180278719A1 (en) * | 2017-02-02 | 2018-09-27 | Google Inc. | Custom digital components |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6058426A (en) | 1997-07-14 | 2000-05-02 | International Business Machines Corporation | System and method for automatically managing computing resources in a distributed computing environment |
US20040236857A1 (en) * | 2003-05-19 | 2004-11-25 | Sumit Roy | Systems and methods for selecting a provider to service content requested by a client device |
US7647242B2 (en) | 2003-09-30 | 2010-01-12 | Google, Inc. | Increasing a number of relevant advertisements using a relaxed match |
JP2006109007A (ja) | 2004-10-04 | 2006-04-20 | Matsushita Electric Ind Co Ltd | 情報配信装置、情報配信方法及び情報受信方法 |
US7870256B2 (en) | 2005-03-25 | 2011-01-11 | Hewlett-Packard Development Company, L.P. | Remote desktop performance model for assigning resources |
US7827060B2 (en) | 2005-12-30 | 2010-11-02 | Google Inc. | Using estimated ad qualities for ad filtering, ranking and promotion |
US8001582B2 (en) | 2008-01-18 | 2011-08-16 | Microsoft Corporation | Cross-network reputation for online services |
US9098333B1 (en) | 2010-05-07 | 2015-08-04 | Ziften Technologies, Inc. | Monitoring computer process resource usage |
US9158586B2 (en) | 2011-10-10 | 2015-10-13 | Cox Communications, Inc. | Systems and methods for managing cloud computing resources |
KR20130082685A (ko) * | 2011-12-14 | 2013-07-22 | 주식회사 케이티 | 가상 머신을 이용한 콘텐츠 서비스 제공 시스템 및 방법 |
US9594594B2 (en) * | 2012-10-18 | 2017-03-14 | Advanced Micro Devices, Inc. | Media hardware resource allocation |
WO2015013459A1 (en) * | 2013-07-26 | 2015-01-29 | Ad-Vantage Networks, Inc. | Systems and methods for managing network resource requests |
WO2015103540A1 (en) | 2014-01-03 | 2015-07-09 | Yahoo! Inc. | Systems and methods for content processing |
KR20150083713A (ko) * | 2014-01-10 | 2015-07-20 | 삼성전자주식회사 | 자원 관리를 위한 전자 장치 및 방법 |
-
2019
- 2019-04-26 JP JP2020515102A patent/JP7013569B2/ja active Active
- 2019-04-26 CN CN201980004540.8A patent/CN112154433A/zh active Pending
- 2019-04-26 WO PCT/US2019/029292 patent/WO2020219064A1/en unknown
- 2019-04-26 EP EP19726801.4A patent/EP3752932A1/en not_active Withdrawn
- 2019-04-26 KR KR1020227004918A patent/KR102464339B1/ko active IP Right Grant
- 2019-04-26 KR KR1020207007383A patent/KR102364970B1/ko active IP Right Grant
- 2019-11-04 US US16/673,526 patent/US11366698B2/en active Active
-
2022
- 2022-06-16 US US17/842,524 patent/US11687602B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150269156A1 (en) * | 2014-03-21 | 2015-09-24 | Microsoft Corporation | Machine-assisted search preference evaluation |
US20180278719A1 (en) * | 2017-02-02 | 2018-09-27 | Google Inc. | Custom digital components |
Also Published As
Publication number | Publication date |
---|---|
US20200341816A1 (en) | 2020-10-29 |
JP2021524070A (ja) | 2021-09-09 |
CN112154433A (zh) | 2020-12-29 |
US20220327000A1 (en) | 2022-10-13 |
KR20220025248A (ko) | 2022-03-03 |
JP7013569B2 (ja) | 2022-01-31 |
WO2020219064A1 (en) | 2020-10-29 |
US11687602B2 (en) | 2023-06-27 |
KR20200125922A (ko) | 2020-11-05 |
KR102364970B1 (ko) | 2022-02-18 |
EP3752932A1 (en) | 2020-12-23 |
US11366698B2 (en) | 2022-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11310331B2 (en) | Optimizing user interface data caching for future actions | |
US10515132B2 (en) | Optimizing transmission of digital components | |
US20130144858A1 (en) | Scheduling resource crawls | |
CN112262386A (zh) | 动态应用内容分析 | |
US20230306263A1 (en) | Pattern-based classification | |
CN116113959A (zh) | 评估对搜索查询的解释 | |
KR102605598B1 (ko) | 타겟팅 및 기타 설정을 개선하기 위한 콘텐츠 제공자 추천 | |
CN109075987B (zh) | 优化数字组件分析*** | |
US11687602B2 (en) | Efficient use of computing resources in responding to content requests | |
WO2018034719A1 (en) | Optimized machine learning system | |
CN112218114B (zh) | 视频缓存控制方法、装置和计算机可读存储介质 | |
JP7235900B2 (ja) | コンテンツ要求に応答する際のコンピューティングリソースの効率的な使用 | |
KR20120128827A (ko) | 서비스 중단없이 안정적으로 회원 서비스 시스템의 데이터 이전이 가능한 클라우드 서버 | |
US12038963B2 (en) | Determining types of digital components to provide | |
JP7223164B2 (ja) | データインテグリティの最適化 | |
CN116708298A (zh) | 流量控制方法、装置、计算机设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A107 | Divisional application of patent | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |