GPU에서 제한되지 않은 비선형 최적화 문제 해결


18

GPU (CUDA)에서 제한되지 않은 비선형 최적화 문제를 해결하려고합니다.

목적 함수는 부드러운 비선형 함수이며 기울기는 분석적으로 계산하기에 상대적으로 저렴하므로 수치 근사로 신경 쓸 필요가 없습니다.

대부분의 fp32 수학 연산 으로이 문제를 해결하고 싶습니다 (다양한 이유로). 비선형 최적화 방법은 반올림 오류에 대해 더 강력하지만 성능이 우수합니까? (예를 들어 켤레 그라디언트 / 쿼시 뉴턴 / 신뢰 영역) GPU에서 BFGS를 사용해 본 결과가 좋은가요?

필요한 경우 Hessian 인 BTW가 제 경우에는 비교적 작지만 (일반적으로 <64x64) 수천 개의 이러한 소규모 최적화 문제를 동시에 해결해야합니다.


4
작은 크기의 문제를 감안할 때 특정 알고리즘 선택 (예 : BFGS)이 가장 중요한 과제라고 생각하지 않습니다. 대신 GPU <-> CPU 통신 오버 헤드를 최소화합니다. 아마도 그렇게하는 가장 좋은 방법은 GPU에서 동시에 많은 문제를 해결하는 것입니다. 한 번에 모두로드하고 한 번에 해결하고 모든 결과를 한 번에 다운로드하십시오. 알고리즘에 대한 구체적인 조언은 없지만 분기보다 루프에서 GPU가 더 좋다고 말할 것입니다.
Michael Grant

1
@ 마이클 C. 그랜트 : 글쎄, 통신 오버 헤드는 내 경우에 계산으로 쉽게 숨길 수 있으므로 병목 현상이 없으므로 제한된 메모리 BFGS 또는 표준 BFGS를 사용하는 것이 매우 중요하지만 확실하지 않습니다. 더 나은 접근.
user0002128

어떤 사람들 은 CUDA로 LBFGS를 구현 했습니다 .
BenC

답변:


8

LBFGS, Barzilai Borwein 그라디언트 디센트 및 비선형 켤레 그라디언트를 포함하여 GPU에서 매우 다양한 비선형 솔버를 구현했습니다.

이를 위해 Dai & Yuan의 비선형 켤레 구배가 가장 효율적이었습니다. 일반적으로, 다른 버전의 비선형 켤레 구배가 더 효율적일 수 있지만 (CG-DESCENT와 같이) 구현하기가 더 까다로울 수도 있습니다.

LBFGS는 일반적으로 매우 확실한 선택이며, 실제로 메모리에 묶이지 않으면 시작하는 것이 가장 좋습니다.

켤레 그라디언트와 BFGS 모두 라인 검색이 필요합니다. fp32가 문제가되는 곳입니다. 줄 검색에 표준 Wolfe 조건을 사용하는 대신 여기에 제안 된 대략적인 Wolfe 조건을 사용하는 것이 좋습니다 . 이 논문은 약간 관련되어 있지만 중요한 것은 방정식 4.1입니다. 본질적으로 함수를 계산할 수있는 정밀도를 명시 적으로 소개합니다.

GPU에 대한 고려 사항 :

작은 문제가 많이 있는데, 하나의 큰 문제에 대한 사용 사례와 약간 다릅니다. 함수와 기울기 평가를 병렬화하여 블록의 모든 스레드를 사용할 수있는 경우 GPU 블록 당 1 개의 문제를 실행하는 것이 좋습니다. 이렇게하면 다른 문제에 다른 반복 횟수가 필요한 경우 문제가되지 않습니다.

이것이 옵션이 아닌 경우 LBFGS 솔버를 사용합니다. 함수가 올바르게 작동하면 단계 크기를 1 (줄 검색을 피함)을 사용하고 고정 된 반복 횟수에 대한 모든 문제를 실행하면됩니다.


0

Levenberg Marquardt (신뢰 영역 변형)는 많은 실제 응용 분야에서 사용되며 매우 빠른 속도 대 정확도 성능을 보여 주므로 사용하는 것이 좋습니다. 또한 GPU에는 시도 할 수있는 라이브러리 (예 : cuLM https://github.com/zitmen/cuLM )가 있습니다. 그들이 일을하지 않으면 구현할 수있는 많은 리소스가 있습니다. LM을 구현하는 것은 결코 어렵지 않습니다. GPU 통신 최소화에만주의해야합니다. 간단한 아이디어를 얻으려면 :

http://on-demand.gputechconf.com/gtc/2012/presentations/S0231-Levenberg-Marquardt-Using-Block-Sparse-Matrices-on-CUDA.pdf


2
Levenberg-Marquart는 비선형 최소 제곱을위한 것입니다. 나는 그가 최소 자승에 대해 언급하지 않았다고 생각합니다.
Kurt

0

시뮬레이션 된 어닐링 절차는 반올림 오류를 더 잘 처리 할 수 ​​있으며 쉽게 병렬화 할 수 있습니다.

검색 영역의 초기 그리드와 초기 "온도"매개 변수로 시작합니다.

각 단계에서 가능한 솔루션 포인트를 계산합니다 (온도와 반비례 할 가능성이있는 비 솔루션 포인트도 수용 할 수 있음)

그런 다음 해당 단계에서 솔루션 만 유지하고 다음 반복을 위해 더 세밀한 격자를 제공하는 온도를 높이십시오.

온도가 주어진 한계 / 정확도 임계 값 <

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.