찾다
기술 주변기기일체 포함Ray를 사용하여 효율적인 딥 러닝 데이터 파이프라인 생성

딥 러닝 모델 훈련에 필요한 GPU는 강력하지만 비용이 많이 듭니다. GPU를 완전히 활용하려면 개발자는 다음 훈련 단계를 계산할 준비가 되었을 때 데이터를 GPU로 신속하게 전송할 수 있는 효율적인 데이터 전송 채널이 필요합니다. Ray를 사용하면 데이터 전송 채널의 효율성이 크게 향상될 수 있습니다

1 학습 데이터 파이프라인의 구조

먼저 모델 학습의 의사코드를 살펴보겠습니다

for step in range(num_steps):sample, target = next(dataset) # 步骤1train_step(sample, target) # 步骤2

1단계에서 샘플과 라벨을 얻습니다. 다음 미니 배치. 2단계에서는 GPU에 복사하는 train_step 함수로 전달되고 정방향 및 역방향 전달을 수행하여 손실과 기울기를 계산하고 최적화 프로그램의 가중치를 업데이트합니다.

1단계에 대해 자세히 알아보세요. 데이터 세트가 너무 커서 메모리에 맞지 않는 경우 1단계에서는 디스크나 네트워크에서 다음 미니 배치를 가져옵니다. 또한 1단계에는 일정량의 전처리도 포함됩니다. 입력 데이터는 모델에 제공되기 전에 숫자 텐서 또는 텐서 모음으로 변환되어야 합니다. 경우에 따라 모델에 전달되기 전에 정규화, 축 중심 회전, 임의 섞기 등과 같은 다른 변환도 텐서에서 수행됩니다.

워크플로가 순서대로 엄격하게 실행되는 경우, 즉 1단계가 먼저 수행됩니다. , 그리고 2단계를 수행하면 모델은 항상 다음 데이터 배치의 입력, 출력 및 전처리 작업을 기다려야 합니다. GPU는 효율적으로 활용되지 않으며 다음 미니 배치 데이터를 로드하는 동안 유휴 상태로 유지됩니다.

이 문제를 해결하기 위해 데이터 파이프라인을 생산자-소비자 문제로 볼 수 있습니다. 데이터 파이프라인은 소규모 데이터 배치를 생성하여 제한된 버퍼에 씁니다. 모델/GPU는 버퍼에서 데이터의 미니 배치를 사용하고 정방향/역방향 계산을 수행하며 모델 가중치를 업데이트합니다. 데이터 파이프라인이 모델/GPU가 사용하는 만큼 빠르게 소규모 데이터 배치를 생성할 수 있다면 훈련 프로세스가 매우 효율적일 것입니다.

Ray를 사용하여 효율적인 딥 러닝 데이터 파이프라인 생성Pictures

2. Tensorflow tf.data API

Tensorflow tf.data API는 백그라운드 스레드를 사용하여 소규모 데이터 배치를 얻는 등 데이터 파이프라인을 효율적으로 생성하는 데 사용할 수 있는 풍부한 기능 세트를 제공합니다. 모델은 기다릴 필요가 없습니다. 데이터를 미리 가져오는 것만으로는 충분하지 않습니다. 소규모 데이터 배치를 생성하는 것이 GPU가 데이터를 사용할 수 있는 것보다 느린 경우 병렬화를 사용하여 데이터 읽기 및 변환 속도를 높여야 합니다. 이를 위해 Tensorflow는 여러 스레드를 활용하여 데이터를 병렬로 읽는 인터리브 기능과 여러 스레드를 사용하여 소규모 데이터 배치를 변환하는 병렬 매핑 기능을 제공합니다.

이러한 API는 멀티스레딩을 기반으로 하기 때문에 Python GIL(Global Interpreter Lock)에 의해 제한될 수 있습니다. Python의 GIL은 바이트코드를 한 번에 실행되는 단일 스레드로만 제한합니다. 파이프라인에서 순수 TensorFlow 코드를 사용하는 경우 TensorFlow 핵심 실행 엔진이 GIL 범위 외부에서 작동하기 때문에 일반적으로 이러한 제한이 발생하지 않습니다. 그러나 사용된 타사 라이브러리가 GIL 제한을 해제하지 않거나 Python을 사용하여 많은 계산을 수행하는 경우 멀티스레딩을 사용하여 파이프라인을 병렬화하는 것은 불가능합니다

3 데이터의 다중 프로세스 병렬화를 사용합니다. 파이프라인

다음 생성기 함수를 고려해 보세요. 이 함수는 데이터 샘플과 레이블의 미니 배치를 생성하기 위해 일부 계산 로드 및 수행을 시뮬레이션합니다.

def data_generator():for _ in range(10):# 模拟获取# 从磁盘/网络time.sleep(0.5)# 模拟计算for _ in range(10000):passyield (np.random.random((4, 1000000, 3)).astype(np.float32), np.random.random((4, 1)).astype(np.float32))

다음으로, 더미 훈련 파이프라인에서 생성기를 사용하고 미니 배치 데이터를 생성하는 데 걸리는 평균 시간을 측정합니다.

generator_dataset = tf.data.Dataset.from_generator(data_generator,output_types=(tf.float64, tf.float64),output_shapes=((4, 1000000, 3), (4, 1))).prefetch(tf.data.experimental.AUTOTUNE)st = time.perf_counter()times = []for _ in generator_dataset:en = time.perf_counter()times.append(en - st)# 模拟训练步骤time.sleep(0.1)st = time.perf_counter()print(np.mean(times))

평균 소요 시간은 약 0.57초인 것으로 관찰되었습니다(Intel Core i7 프로세서를 탑재한 Mac 노트북에서 측정). 이것이 실제 훈련 루프라면 GPU 활용도는 상당히 낮을 것입니다. 계산에 0.1초만 소요되고 다음 데이터 배치를 기다리며 0.57초 동안 유휴 상태로 유지됩니다.

데이터 로딩 속도를 높이려면 다중 프로세스 생성기를 사용할 수 있습니다.

from multiprocessing import Queue, cpu_count, Processdef mp_data_generator():def producer(q):for _ in range(10):# 模拟获取# 从磁盘/网络time.sleep(0.5)# 模拟计算for _ in range(10000000):passq.put((np.random.random((4, 1000000, 3)).astype(np.float32),np.random.random((4, 1)).astype(np.float32)))q.put("DONE")queue = Queue(cpu_count()*2)num_parallel_processes = cpu_count()producers = []for _ in range(num_parallel_processes):p = Process(target=producer, args=(queue,))p.start()producers.append(p)done_counts = 0while done_counts <p>이제 다음 미니 배치 데이터를 기다리는 데 소요된 시간을 측정하면 평균 0.08초를 얻습니다. 이는 거의 7배의 속도 향상이지만 이상적으로는 이 시간이 0에 가까워지기를 바랍니다. </p><p>분석해 보면 데이터의 역직렬화를 준비하는 데 상당한 시간이 소요되는 것을 알 수 있습니다. 다중 프로세스 생성기에서 생산자 프로세스는 메인 프로세스에서 준비한 다음 역직렬화해야 하는 대규모 NumPy 배열을 반환합니다. 그렇다면 프로세스 간에 대규모 배열을 전달할 때 효율성을 향상시키는 방법은 무엇입니까? </p><h2 id="Ray를-사용하여-데이터-파이프라인을-병렬화합니다">4. Ray를 사용하여 데이터 파이프라인을 병렬화합니다.</h2><p>여기서 Ray가 사용됩니다. Ray는 Python에서 분산 컴퓨팅을 실행하기 위한 프레임워크입니다. 서로 다른 프로세스 간에 객체를 효율적으로 전송하기 위해 공유 메모리 객체 저장소가 함께 제공됩니다. 특히, 객체 저장소의 Numpy 배열은 직렬화 및 역직렬화 없이 동일한 노드의 워커 간에 공유될 수 있습니다. 또한 Ray를 사용하면 여러 시스템에 걸쳐 데이터 로드를 쉽게 확장하고 Apache Arrow를 사용하여 대규모 어레이를 효율적으로 직렬화 및 역직렬화할 수 있습니다. </p><p>Ray에는 병렬 반복자를 생성할 수 있는 유틸리티 함수 from_iterators가 함께 제공되며 개발자는 이를 사용하여 data_generator 생성기 함수를 래핑할 수 있습니다. </p><pre class="brush:php;toolbar:false">import raydef ray_generator():num_parallel_processes = cpu_count()return ray.util.iter.from_iterators([data_generator]*num_parallel_processes).gather_async()

ray_generator를 사용하여 다음 미니 배치 데이터를 기다리는 데 소요되는 시간은 0.02초로 측정되었으며 이는 다중 프로세스 처리를 사용하는 것보다 4배 빠릅니다.

위 내용은 Ray를 사용하여 효율적인 딥 러닝 데이터 파이프라인 생성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 51CTO.COM에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
무지의 베일 뒤에 직장 AI를 만들어야합니다.무지의 베일 뒤에 직장 AI를 만들어야합니다.Apr 29, 2025 am 11:15 AM

존 롤스 (John Rawls)의 1971 년 책 The Justice의 이론에서 그는 오늘날의 AI 디자인의 핵심으로 취해야 할 사고 실험을 제안하고 의사 결정 : 무지의 베일을 제안했다. 이 철학은 형평성을 이해하기위한 간단한 도구를 제공하며 리더 가이 이해를 사용하여 AI를 공평한 방식으로 설계하고 구현할 수있는 청사진을 제공합니다. 새로운 사회에 대한 규칙을 만들고 있다고 상상해보십시오. 그러나 전제가 있습니다.이 사회에서 어떤 역할을할지 미리 알 수 없습니다. 당신은 부자 또는 가난하거나 건강하거나 장애가있을 수 있으며 다수 또는 소수의 소수에 속할 수 있습니다. 이 "무지의 베일"하에 운영되면 규칙 제조업체가 스스로 이익을 얻는 결정을 내리지 못하게합니다. 반대로, 사람들은 대중을 공식화하도록 더 동기를 부여받을 것입니다

결정, 결정… 실용적인 적용 AI를위한 다음 단계결정, 결정… 실용적인 적용 AI를위한 다음 단계Apr 29, 2025 am 11:14 AM

수많은 회사들이 로봇 프로세스 자동화 (RPA)를 전문으로하며, 반복적 인 작업과 같은 반복적 인 작업 (어디서나 자동화, 파란색 프리즘 등)를 제공하는 봇을 제공합니다. 한편, 프로세스 마이닝, 오케스트레이션 및 지능형 문서 처리 Speciali

에이전트가오고 있습니다 - AI 파트너 옆에서 우리가 할 일에 대해 더 많이에이전트가오고 있습니다 - AI 파트너 옆에서 우리가 할 일에 대해 더 많이Apr 29, 2025 am 11:13 AM

AI의 미래는 간단한 단어 예측과 대화 시뮬레이션을 넘어서고 있습니다. AI 에이전트는 새로운 행동 및 작업 완료가 가능합니다. 이러한 변화는 이미 Anthropic의 Claude와 같은 도구에서 분명합니다. AI 요원 : 연구 a

AI 중심의 미래에 리더를위한 통제보다 공감이 더 중요한 이유AI 중심의 미래에 리더를위한 통제보다 공감이 더 중요한 이유Apr 29, 2025 am 11:12 AM

빠른 기술 발전은 미래의 업무에 대한 미래 지향적 인 관점을 필요로합니다. AI가 단순한 생산성 향상을 초월하고 사회적 구조를 형성하기 시작하면 어떻게됩니까? Topher McDougal의 다가오는 책인 Gaia Wakes :

제품 분류를위한 AI : 기계가 세법을 마스터 할 수 있습니까?제품 분류를위한 AI : 기계가 세법을 마스터 할 수 있습니까?Apr 29, 2025 am 11:11 AM

조화 시스템 (HS)과 같은 시스템의 "HS 8471.30"과 같은 복잡한 코드를 포함하는 제품 분류는 국제 무역 및 국내 판매에 중요합니다. 이 코드는 올바른 세금 신청을 보장하여 모든 inv에 영향을 미칩니다

데이터 센터 요구가 기후 기술 반등을 일으킬 수 있습니까?데이터 센터 요구가 기후 기술 반등을 일으킬 수 있습니까?Apr 29, 2025 am 11:10 AM

데이터 센터 및 기후 기술 투자의 에너지 소비의 미래 이 기사는 AI가 주도하는 데이터 센터의 에너지 소비 급증과 기후 변화에 미치는 영향을 탐구 하고이 과제를 해결하기 위해 혁신적인 솔루션 및 정책 권장 사항을 분석합니다. 에너지 수요의 과제 : 대규모 및 초대형 스케일 데이터 센터는 수십만 명의 일반 북미 가족의 합과 비슷한 대규모 전력을 소비하며, AI 초반 규모 센터는 이보다 수십 배 더 많은 힘을 소비합니다. 2024 년 첫 8 개월 동안 Microsoft, Meta, Google 및 Amazon은 AI 데이터 센터의 건설 및 운영에 약 1,250 억 달러를 투자했습니다 (JP Morgan, 2024) (표 1). 에너지 수요 증가는 도전이자 기회입니다. 카나리아 미디어에 따르면 다가오는 전기

AI와 할리우드의 다음 황금 시대AI와 할리우드의 다음 황금 시대Apr 29, 2025 am 11:09 AM

생성 AI는 영화 및 텔레비전 제작을 혁신하고 있습니다. Luma의 Ray 2 모델과 활주로의 Gen-4, Openai의 Sora, Google의 VEO 및 기타 새로운 모델은 전례없는 속도로 생성 된 비디오의 품질을 향상시키고 있습니다. 이 모델은 복잡한 특수 효과와 현실적인 장면을 쉽게 만들 수 있으며 짧은 비디오 클립과 카메라로 인식 된 모션 효과조차도 달성되었습니다. 이러한 도구의 조작과 일관성은 여전히 ​​개선되어야하지만 진행 속도는 놀랍습니다. 생성 비디오는 독립적 인 매체가되고 있습니다. 일부 모델은 애니메이션 제작에 능숙하고 다른 모델은 라이브 액션 이미지에 능숙합니다. Adobe 's Firefly와 Moonvalley's MA가

chatgpt가 천천히 AI의 가장 큰 예-맨이되고 있습니까?chatgpt가 천천히 AI의 가장 큰 예-맨이되고 있습니까?Apr 29, 2025 am 11:08 AM

ChatGpt 사용자 경험 감소 : 모델 저하 또는 사용자 기대치입니까? 최근에, 많은 ChatGpt 유료 사용자가 성능 저하에 대해 불평하여 광범위한 관심을 끌었습니다. 사용자는 모델에 대한 느린 반응, 짧은 답변, 도움 부족 및 더 많은 환각을보고했습니다. 일부 사용자는 소셜 미디어에 대한 불만을 표명했으며 Chatgpt가“너무 아첨”이되었으며 중요한 피드백을 제공하기보다는 사용자보기를 확인하는 경향이 있습니다. 이는 사용자 경험에 영향을 줄뿐만 아니라 생산성 감소 및 컴퓨팅 리소스 낭비와 같은 회사 고객에게 실제 손실을 가져옵니다. 성능 저하의 증거 많은 사용자들이 ChatGpt 성능, 특히 GPT-4와 같은 이전 모델 (이번 달 말에 서비스에서 곧 중단 될 예정)에서 상당한 악화를보고했습니다. 이것

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.