
손님 공유:
양린산-후이시 인텔리전스
Huixi Intelligence 소개:
후이시 인텔리전스는 2022년 설립된 자율주행 칩을 만드는 스타트업 기업이다. 혁신적인 차량 내 지능형 컴퓨팅 플랫폼 구축에 전념하고 있는 이 회사는 고급 지능형 주행 칩, 사용하기 쉬운 개방형 툴 체인 및 풀 스택 자율 주행 솔루션을 제공하여 자동차 회사가 고품질의 효율적인 자율 주행 대량 생산을 달성할 수 있도록 지원합니다. 저비용, 대규모, 자동화된 반복 기능을 구축하여 데이터 중심 시대의 고급 스마트 여행을 선도합니다.
개요를 공유하세요:
- 스타트업에서 Alluxio를 어떻게 사용하나요?
- 0~1(연구-배포-생산)까지 Alluxio를 사용하는 과정입니다.
- 실무 경험 공유.
다음은 공유된 콘텐츠의 전문 버전입니다.
주제 공유:
"자율주행 모델 훈련에 Alluxio 적용 및 배포"
자율주행 데이터 폐쇄 루프

먼저 자율주행에서 데이터 폐쇄 루프를 구축하는 방법을 공유하겠습니다. 이 비즈니스 프로세스는 누구나 알고 있을 것입니다. 자율주행에는 데이터 마이닝 차량, 알고리즘을 이용해 도로를 달리는 자동차 등 다양한 차량 유형이 포함될 것입니다. 데이터 수집은 주행 과정에서 자율주행차로부터 다양한 데이터를 수집하는 것입니다. 예를 들어 카메라 데이터는 사진이고 LiDAR 데이터는 포인트 클라우드입니다.
센서 데이터가 수집되면 자동차는 매일 수 테라바이트의 데이터를 생성할 수 있습니다. 이러한 데이터는 베이스 디스크나 기타 업로드 방식을 통해 전체적으로 저장되고, 오브젝트 스토리지로 전송됩니다. 원본 데이터가 저장된 후에는 데이터를 한 번에 한 프레임씩 데이터 프레임으로 자르는 등 데이터 분석 및 전처리를 위한 파이프라인이 있으며, 각 프레임의 서로 다른 센서 데이터 간에 동기화 및 정렬 작업이 수행될 수 있습니다.
데이터 분석을 마친 후에는 더 많은 데이터 분석을 수행할 차례입니다. 데이터 세트를 하나씩 구축합니다. 알고리즘이든, 시뮬레이션이든, 테스트이든 데이터 세트를 구축해야 하기 때문입니다. 예를 들어, 비가 오는 날 특정 밤, 특정 교차로 또는 인구 밀도가 높은 지역에 대한 데이터를 원할 경우 전체 시스템에 이러한 데이터 요구 사항이 많이 있을 것이며 레이블을 지정해야 합니다. 데이터를 입력하고 라벨을 추가하세요. 예를 들어 칭화대학교 동문에서 이 위치의 경도와 위도를 가져와서 주변 POI를 분석해야 합니다. 그런 다음 채굴된 데이터에 레이블을 지정합니다. 일반적인 주석에는 객체, 보행자, 객체 유형 등이 포함됩니다.
이 레이블이 지정된 데이터는 훈련에 사용됩니다. 일반적인 작업에는 표적 감지, 차선 감지 또는 더 큰 엔드투엔드 모델이 포함됩니다. 모델이 훈련된 후에는 일부 시뮬레이션 검증을 수행해야 합니다. 검증 후 차량에 배치하고, 데이터를 실행하고, 이를 기반으로 더 많은 데이터를 수집합니다. 이는 지속적으로 데이터를 풍부하게 하고 더 나은 성능을 갖춘 모델을 지속적으로 구축하는 순환입니다. 이것이 전체 훈련과 데이터 폐쇄 루프가 해야 할 일이며, 현재 자율주행 연구개발의 핵심이기도 하다.
알고리즘 교육: NAS
우리는 모델 훈련에 중점을 둡니다. 모델 훈련은 주로 데이터 마이닝을 통해 데이터를 얻어 데이터 세트를 생성합니다. 데이터 세트는 내부적으로 데이터, 채널 및 저장 위치를 포함하는 pkl 파일입니다. 마지막으로 데이터 알고리즘을 교육하는 학생들은 자체 다운로드 스크립트를 작성하여 객체 스토리지에서 로컬로 데이터를 가져옵니다.

Alluxio를 선택하기 전에는 NAS 시스템을 캐시 역할로 사용하여 객체 스토리지 데이터를 NAS로 가져오고 마지막으로 다른 모델을 사용하여 교육용 데이터를 로드했습니다. Alluxio를 사용하기 전의 대략적인 훈련 과정입니다.
NAS의 가장 큰 문제 중 하나:
- 동시성 성능은 상대적으로 낮습니다 . NAS를 대용량 하드 디스크로 이해하면 몇 가지 작업만 함께 실행할 때 충분합니다. 그러나 수십 개의 훈련 작업이 동시에 수행되고 많은 모델이 훈련되는 경우 종종 중단 현상이 발생합니다. 우리가 매우 막혀서 R&D 팀이 매일 불평하던 시절이 있었습니다. 너무 막혀서 가용성과 동시성 성능이 매우 낮습니다.
- 관리의 어려움 - 모든 사람이 자신이 다운로드한 스크립트를 사용하고 원하는 데이터를 자신의 디렉터리에 다운로드합니다. 다른 사람이 스스로 다른 데이터 더미를 다운로드하여 NAS의 다른 디렉토리에 넣을 수 있습니다. 이렇게 하면 NAS 공간이 가득 차면 정리하기가 어려워집니다. 당시 우리는 기본적으로 직접 대면이나 위챗 그룹을 통해 소통했습니다. 한편으로는 효율성이 매우 낮으며 그룹 메시지 관리에 의존하는 것은 뒤처지게 됩니다. 반면에 수동으로 제거하면 일부 위험이 발생할 수도 있습니다. 데이터를 제거할 때 다른 사람의 데이터 세트가 삭제되는 상황이 발생했습니다. 이로 인해 온라인 작업 영역에서도 오류가 발생하게 되는데, 이는 또 다른 문제점입니다.
- 공간 낭비 - 여러 사람이 다운로드한 데이터는 서로 다른 디렉터리에 배치됩니다. 동일한 데이터 프레임이 여러 데이터 세트에 나타나 심각한 공간 낭비가 발생할 수 있습니다.
- 사용하기가 매우 복잡합니다 . pkl의 파일 형식이 다르고 다운로드 논리도 다르며 모든 사람이 다운로드 프로그램을 별도로 작성해야 합니다.
이전에 NAS를 사용하면서 직면했던 몇 가지 어려움과 문제를 해결하기 위해 연구를 진행했습니다. 연구 후에 우리는 Alluxio에 집중했습니다. 나는 Alluxio가 상대적으로 통합된 캐시를 제공할 수 있다는 것을 발견했습니다. 캐시는 훈련 속도를 향상시키고 관리 비용을 줄일 수 있습니다. 우리는 또한 Alluxio 시스템을 사용하여 이중 컴퓨터실 문제를 처리할 것입니다. 통합된 네임스페이스와 액세스 방법을 통해 시스템 설계가 단순화되고 코드 구현도 매우 단순해집니다.

Alluxio에 알고리즘 훈련 도입

NAS를 Alluxio로 교체하면 Alluxio는 방금 언급한 몇 가지 문제를 구체적으로 해결할 수 있습니다.
- 동시성 측면에서 NAS 자체는 완전히 분산된 시스템이 아니지만 Alluxio는 그렇습니다. NAS가 액세스하는 IO가 특정 속도에 도달하면 몇 G/s에 도달하면 정지되기 시작할 수 있습니다. Alluxio의 상한은 매우 높습니다. 이 점을 설명하기 위해 아래에 특별한 테스트가 있습니다.
- 수동 청소 또는 관리는 매우 번거롭습니다. Alluixo는 캐시 제거 정책을 구성합니다. 일반적으로 LRU를 통해 임계값(예: 90%)에 도달하면 자동으로 캐시를 제거하고 정리합니다. 이것의 효과:
- 효율성이 크게 향상되었습니다.
- 실수로 삭제하여 발생하는 보안 문제를 방지할 수 있습니다.
- 데이터 중복 문제를 해결했습니다.
Alluxio에서는 UFS의 파일이 Alluxio의 경로에 해당하며, 모든 사람이 이 경로에 접근하면 해당 데이터를 얻을 수 있으므로 데이터 중복 문제가 발생하지 않습니다. 또한 위의 방법을 사용하는 것은 상대적으로 간단합니다. FUSE 인터페이스를 통해서만 액세스하면 되며 더 이상 파일을 다운로드할 필요가 없습니다.
위의 내용은 방금 이야기한 다양한 문제를 논리적 수준에서 해결합니다. 초기 POC 테스트부터 다양한 성능 검증, 최종 배포, 운영 및 유지 관리에 이르기까지 Alluxio를 0에서 1까지 구현하는 전체 구현 프로세스에 대해 이야기하겠습니다. 우리의 실제 경험 중 일부.
Alluxio 배포: 단일 컴퓨터실

우선, 단일 컴퓨터실에 배포할 수 있습니다. 즉, GPU에 가깝고 GPU 노드에 배포되어야 합니다. 동시에, 이전에는 GPU에서 거의 사용되지 않았던 SSD를 사용하여 각 노드를 활용한 후 FUSE와 작업자를 함께 배포했습니다. FUSE는 클라이언트에 해당하고 작업자는 FUSE 서비스를 제공하기 위해 인트라넷 통신이 가능한 소규모 캐시 클러스터에 해당합니다. 마지막으로 작업자는 기본 개체 저장소 자체와 통신합니다.
Alluxio 배포: 컴퓨터실 전체
그러나 여러 가지 이유로 인해 우리는 여전히 교차 기계실을 보유하게 됩니다. 이제 두 개의 컴퓨터실이 있으며 각 컴퓨터실에는 해당 S3 서비스와 해당 GPU 컴퓨팅 노드가 있습니다. 기본적으로 우리는 모든 컴퓨터실에 Alluxio를 배치할 것입니다. 동시에 우리는 이 프로세스에도 주의를 기울여야 합니다. 한 컴퓨터실에 두 개의 Alluxio 개체 저장소가 있을 수 있습니다. 다른 컴퓨터실에도 S3를 마운트해야 하는 경우 버킷 이름에 대한 통합 계획을 세우도록 노력하세요. 두 가지를 과부하하십시오. 예를 들어 여기에 버킷 1이 있고 저기에 버킷 1이 있으면 Alluxio를 마운트할 때 몇 가지 문제가 발생할 수 있습니다.

또한 서로 다른 엔드포인트의 경우 내부 네트워크와 외부 네트워크의 차이점에 주의하세요. 예를 들어 클러스터 1의 Alluxio는 클러스터 1 엔드포인트의 내부 네트워크를 탑재하고 그렇지 않은 경우 외부 네트워크는 반대쪽에 있습니다. , 성능이 크게 저하됩니다. 마운트 후에는 동일한 경로를 통해 서로 다른 클러스터에 있는 서로 다른 버킷의 데이터에 액세스할 수 있으므로 전체 아키텍처가 머신룸 간 배포 측면에서 매우 단순해집니다.
Alluxio 테스트: 기능

실제로 NAS를 Alluxio로 교체하려면 배포하기 전에 많은 기능 테스트를 수행해야 합니다. 이러한 기능 테스트의 목적은 기존 알고리즘 프로세스를 최소한으로 수정하여 알고리즘 학생들도 사용할 수 있도록 하는 것입니다. 이는 실제 상황에 따라 달라질 수 있습니다. 우리는 Alluxio를 사용하여 거의 2~3주간 POC 검증을 수행했습니다. 여기에는 다음이 포함됩니다.
- K8S에서 PVC에 접근하는 구성;
- 데이터 세트가 구성되는 방식
- 작업 제출 구성
- 접근 경로 교체
- 최종적으로 액세스된 스크립팅 인터페이스입니다.
위에서 발생한 많은 문제를 확인해야 할 수도 있습니다. 최소한 이를 통해 일반적인 작업을 선택한 다음 몇 가지 수정을 가하고 최종적으로 비교적 순조롭게 NAS를 Alluxio로 교체해야 합니다.
Alluxio 테스트: 성능

다음으로 이를 기반으로 몇 가지 성능 테스트가 수행됩니다. 이 과정에서 우리는 단일 기계이든 다중 기계이든 비교적 충분한 테스트를 수행했습니다. 단일 시스템에서 Alluxio와 원래 NAS의 성능은 기본적으로 동일합니다.

실제로 Alluxio의 장점을 실제로 구현하는 것은 멀티 호스트 및 분산 기능입니다. NAS 또는 QTS의 예를 볼 수 있는데, 여기에는 불안정성이라는 매우 분명한 점이 있습니다. 3G와 10G 테스트 사이의 변동은 상대적으로 클 것입니다. 동시에 약 7/8G에 도달하면 기본적으로 안정적인 병목 현상이 발생합니다.
실제로 Alluxio의 장점을 실제로 구현하는 것은 멀티 호스트 및 분산 기능입니다. NAS 또는 QTS의 예를 볼 수 있는데, 여기에는 불안정성이라는 매우 분명한 점이 있습니다. 3G와 10G 테스트 사이의 변동은 상대적으로 클 것입니다. 동시에 약 7/8G에 도달하면 기본적으로 안정적인 병목 현상이 발생합니다.
Alluxio의 경우 전체 테스트 과정에서 실행되는 인스턴스 수가 늘어날수록 노드가 매우 높은 상한선에 도달할 수 있으며, 20GB/s로 설정해도 여전히 상승 추세를 보였습니다. 이는 Alluxio의 전반적인 동시 및 분산 성능이 매우 우수하다는 것을 보여줍니다.
Alluxio 착륙: 매개변수 조정 및 환경 적응

기능 검증 및 성능 테스트를 마친 후에는 실제로 Alluxio 클러스터를 배포해야 합니다. 배포 후에는 매개변수 조정 및 적응 과정이 필요합니다. 테스트 중에는 몇 가지 일반적인 작업만 사용했기 때문에 실제로 Alluxio 환경을 사용해보면 작업이 늘어날수록 매개변수 조정 및 적응 과정이 발생한다는 것을 알 수 있습니다. 성능을 최대한 활용하려면 Alluxio의 해당 매개변수를 실제 작동 환경과 일치시켜야 합니다. 따라서, 실행하고, 운영하고, 유지하고, 매개변수를 조정하는 과정이 있을 것입니다.
우리는 다음과 같은 몇 가지 일반적인 매개변수 조정 프로세스를 거쳤습니다.
- ETCD의 노드가 여기에 나열됩니다. 처음에는 1이었다가 3으로 변경됩니다. 이렇게 하면 중단된 ETCD가 하나이고 전체 클러스터가 중단되지 않았음을 보장합니다.
- S3 관련 항목도 있습니다. 예를 들어 Alluxio가 구현되면 S3는 상대적으로 긴 액세스 경로를 생성하고 기본적으로 중간 경로 노드에 공백을 기록하여 더 나은 성능을 제공합니다. 하지만 이 경우 훈련 작업에 포함된 S3에는 권한 제어 기능이 있으므로 이러한 종류의 데이터를 쓰는 것이 허용되지 않습니다. 이런 종류의 충돌에 직면하면 매개변수 조정도 필요합니다.
- FUSE 노드 자체가 허용할 수 있는 동시성 강도와 같은 기능도 있습니다. 사용하는 직접 메모리의 크기를 포함하면 실제로 전체 비즈니스의 실제 동시성 강도와 많은 관련이 있습니다. 실제로 한 번에 액세스할 수 있는 데이터의 양과 관련이 많습니다. 매개변수 조정 프로세스도 있습니다. 다양한 환경에서는 다양한 문제가 발생할 수 있습니다. 이것이 Alluxio Enterprise Edition을 선택하는 이유이기도 합니다. Alluxio는 Enterprise 버전에서 매우 강력한 지원을 제공하므로 연중무휴 24시간 문제가 발생할 경우 조정하고 협력할 수 있습니다. 상호 조정된 주기를 통해서만 전체 클러스터가 보다 원활하게 실행될 수 있습니다.
Alluxio 구현: 운영 및 유지 관리
우리 팀의 초기 운영 및 유지 관리 동급생은 기본 인프라 유지 관리 및 관련 작업을 많이 담당하는 사람이 한 명뿐이었습니다. Alluxio를 배포하려고 할 때 운영 및 유지 관리 측면의 리소스가 실제로 충분하지 않았기 때문에 동일했습니다. 나도 아르바이트를 하고 있다. 스스로 무언가를 운영하고 유지하는 관점에서 보면, 특히 초보자에게는 운영과 유지에 관한 많은 기록과 지식을 유지하는 것이 중요합니다. 예를 들어, 다음 번에는 어떻게 문제를 더 잘 해결할 수 있는지, 이전에 그러한 경험이 있었는지 여부 등이 있습니다.

당시의 환경을 기준으로 세 가지 문서가 유지됩니다.
- 운영 및 유지보수 이력 문서 : 예를 들어, 어느 날 어떤 문제가 발생했는가? 이러한 문제의 근본 원인은 무엇이며 해결 방법은 무엇입니까? 구체적인 작업은 무엇입니까?
- 운영 문서 : 예를 들어 K8S를 운영하고 유지 관리하는 경우 다시 시작하는 단계는 무엇인지, 작업은 무엇인지, 문제 발생 시 로그를 읽는 방법, 문제 해결 방법, 확인하려면 어떤 작업과 작업을 실행해야 하는지 등이 포함됩니다. FUSE, 모니터링 등에 해당하는 데이터. 다음은 일반적으로 사용되는 몇 가지 작업입니다.
- 구성 변경: Alluxio가 매개변수를 조정하는 중이기 때문입니다. 경우에 따라 다른 구성 파일과 yaml 파일이 발생할 수 있으며 일부 백업을 만들어야 할 수도 있습니다. Git을 사용하여 관리할 수도 있고, 간단히 문서 관리를 사용할 수도 있습니다. 이 방법을 사용하면 현재 구성 및 기록 구성 버전을 역추적할 수 있습니다.
이를 바탕으로 우리는 Alluxio를 더 잘 사용할 수 있도록 몇 가지 관련 지원 구축도 할 것입니다. R&D 학생들은 Alluxio를 사용해본 후 사용하기가 매우 쉽다고 생각합니다. 그러나 멀티태스킹을 수행할 때 일부 지원 구성 요구 사항이 노출됩니다. 예를 들어 더 많은 작업 캐싱을 지원하려면 이미지 크기를 조정하고 이미지를 고화질 4K에서 720P로 줄여야 합니다.
훈련 데이터 세트는 더 나은 데이터 사전 로드를 위해 클러스터 간에 동기화됩니다. 이것들은 모두 Alluxio가 해야 할 체계적인 구축을 중심으로 이루어졌습니다.
Alluxio 착륙: 함께 진행
우리는 Alluxio를 계속 사용하면서 개선할 만한 부분도 발견할 것입니다. Alluxio에 피드백을 제공함으로써 우리는 특히 몇 가지 사항을 소개합니다.
알고리즘을 개발하는 학생들이 관심을 갖는 것은 다음과 같습니다.
- 안정성: 작동 중에 안정적이어야 합니다. Alluxio의 충돌로 인해 전체 시스템의 훈련을 방해할 수 없습니다. 여기에는 FUSE를 최대한 다시 시작하지 않는 등 몇 가지 작동 및 유지 관리 팁이 있을 수 있습니다. 방금 언급했듯이 FUSE를 다시 시작하면 해당 액세스 경로가 실패하고 데이터 파일을 읽을 때 IO 오류가 발생한다는 의미입니다.
- 결정론: 예를 들어, Alluxio는 이전에 데이터를 미리 로드할 필요가 없다고 제안했습니다. 즉, 사전 훈련 전에 한 번 읽을 필요는 없지만 첫 번째 에포크 동안 한 번만 읽으면 됩니다. 하지만 R&D에는 릴리스 주기가 있기 때문에 사전 로드에 걸리는 시간을 정확히 알아야 합니다. 첫 번째 에포크까지 읽어보면 전체 훈련 시간을 추정하기 어렵습니다. 이는 실제로 파일 목록을 통해 캐시하는 방법에도 적용됩니다. 이로 인해 Alluxio에도 몇 가지 요구 사항이 적용됩니다.
- 제어 가능성: Alluxio는 자동화된 LRU 기반 캐시 제거 및 캐시 정리 기능을 제공할 수 있습니다. 그러나 실제로 R&D에서는 여전히 캐시된 일부 데이터를 사전에 정리할 수 있기를 바라고 있습니다. 그러면 Alluxio가 파일 목록을 제공하여 이 데이터를 무료로 제공할 수 있습니까? 이것은 또한 간접적인 사용 외에도 Alluxio를 직접적으로 그리고 매우 제어 가능한 방식으로 사용해야 하는 우리의 필요성이기도 합니다.
운영 및 유지 관리 측면에서도 몇 가지 요구 사항이 제기됩니다.
- 구성 센터: Alluxio 자체는 구성 기록을 저장하기 위한 구성 센터를 제공할 수 있습니다. 구성 항목에 변경 사항을 구현하는 기능을 추가할 때 이 변경 사항이 어떤 영향을 미칠지 미리 예산을 세우십시오.
- Trace는 명령의 실행 프로세스를 추적합니다. 또 다른 보다 현실적인 요구 사항은 다음과 같습니다. 이제 문제를 발견했습니다. 하단의 UFS 파일에 액세스할 때 지연이 상대적으로 높습니다. 이유는 무엇입니까? FUSE 로그만으로는 원인을 알 수 없으므로 해당 위치에 해당하는 작업자 로그를 살펴보아야 합니다. 이는 실제로 매우 시간이 많이 걸리고 번거로운 프로세스이며 문제를 해결할 수 없는 경우가 많아 Alluxio의 온라인 고객 서비스 지원이 필요합니다. Alluxio는 전체 링크에 액세스할 때 FUSE, 작업 및 UFS에서 읽는 데 시간이 많이 걸리는 문제를 추적하기 위해 Trace 명령을 추가할 수 있습니까? 이는 실제로 전체 운영 및 유지 관리 프로세스 또는 문제 해결 프로세스에 큰 도움이 될 것입니다.
- 지능형 모니터링: 때때로 우리가 모니터링하는 내용은 우리가 이미 알고 있는 것입니다. 예를 들어 Direct Memory에 문제가 있는 경우 모니터링 항목을 구성해 보겠습니다. 하지만 다음번에 내 로그에 새로운 문제가 뜬다면, 그것은 누구도 모르게 조용히 일어나는 숨은 문제일 수도 있다. 우리는 이 상황을 자동으로 모니터링하기를 희망합니다.
작업 주문 피드백을 통해 Alluxio에 다양한 제안을 했습니다. Alluxio는 제품 반복 과정에서 더욱 강력한 기능을 제공할 수 있기를 바랍니다. 전체 R&D, 운영 및 유지 관리 문제를 더욱 만족스럽게 만듭니다.
요약
첫째, Alluxio는 전체 자율주행 모델 훈련에 대한 캐싱 가속 측면에서 NAS에 비해 매우 우수한 사용성을 제공합니다. 우리에게도 약 10배의 개선이 있을 것입니다. 비용 절감은 두 부분에서 비롯됩니다.
- 제품 조달 비용이 저렴합니다.
- NAS에는 20~30%의 중복 스토리지가 있을 수 있으며, 이를 Alluxio가 해결할 수 있습니다.
유지 관리의 관점에서 데이터를 자동으로 정리할 수 있어 보다 시의적절하고 안전합니다. 사용 편의성 측면에서는 FUSE를 통해 더욱 편리하게 데이터에 접근할 수 있습니다.
둘째, Huixi가 Alluxio를 0에서 1로 배포하고 시스템을 운영하고 유지하는 방법도 공유했습니다.
위 내용은 제가 공유한 내용입니다. 모두 감사드립니다.