Skip to content

[Hiring/모집중] NNStreamer, NNTrainer, MLOps for On-Device AI #3658

Open
@myungjoo

Description

@myungjoo

Updated: 2024/07
WIP / Writing In Progress

[한국어] (English follows below)

===

Topic: "Device MLOps"

Global AI Center (Samsung Research) 에서 저희와 함께 Device MLOPs 연구/개발을 하실 분들을 모십니다.

Device MLOps 는 On-Device AI 를 위한 MLOps로서 일반적으로 이야기하는 MLOps와 달리, Device 내에서 동작 SW와 Cloud 에서 동작하는 SW를 모두 다루고 있으며, Application들을 위한 API 부터 HW를 제어하기 위한 System SW까지 모두 다루고 있습니다.

현재 Device MLOps를 주제로 하여 연구/개발하고 있는 SW Package들은 다음과 같습니다.

  • nnstreamer (open source. LGPL 2.1): AI 동작을 data stream pipeline 형태로 표현하고 실행하기 위한 framework (gstreamer plugin set).
  • nntrainer (open source. Apache 2.0): Device 내에 존재하는 data를 이용하여 device 내에서 직접 AI 모델을 학습하기 위한 framework (runtime+compiler). On-device 동작을 위한 최적화에 집중되어 있어 on-device LLM/LVM 추론 실행에도 쓰입니다.
  • ML API (open source. Apache 2.0); Device MLOps 기능 (nnstreamer, nntrainer 및 각종 AI offloading, Edge-AI, model deployment 등 OS service 포함) 을 Application 에게 노출하기 위한 API set.
  • ML Service (mlops on device)
  • Learning Framework (mlops on device)
  • MLOps for Device (MLOps pipeline on cloud for on-device AI model development)

System Software & Software Engineering for On-Device AI

  • 업무 분야

    • Device MLOps: NNStreamer, MLOps on Device, MLOps for Device
      • On-Device AI 를 위한 MLOps 와

      • 주로 github.com 에서 오픈소스 형태의 과제를 수행하게 됩니다.

      • C/C++ 위주로 구성되어 있으며, 업무의 상당 부분은 Github issue에서 공개되어 관리되고 있습니다.

      • 구현 대상 Package 예제

        • nnstreamer.git / gstreamer pipeline에서 tensor stream을 처리하고 여러 AI framework들과 HW 가속기를 사용하기 위한 subplugin set 및 개발 도구
        • nnstreamer-edge.git / Edge-AI (among-device AI) 를 위한 tensor stream communication protocol
        • api.git / nnstreamer pipeline 을 제품의 app 개발자들이 사용하기 위한 api와 daemon service의 구현.
        • device 내에 AI service를 배포, 동작, Update, Feedback 시키기 위한 api와 daemon service의 구현 및 Cloud 내 MLOps와의 연결 동작.
        • 그 외 nnstreamer 관련 repository (example, ROS, documentation 등)
      • Skill Set

        • 주: C, C++ / 보조: Java, .NET, Web, Rust
        • 신경망 모델 이해
        • 오픈소스 활동 및 해외 개발자와의 의사소통
        • OS 및 System S/W 이해
        • (부가) Multimedia, Pipeline Architecture, Design Pattern,
    • NNTrainer (On-device training) and On-Device LLM Execution
      • 주로 github.com 에서 오픈소스 형태의 과제를 수행하게 됩니다.
      • C++로 구현되어 Forward/Backward Propagation을 포함한 신경망 학습의 모든 단계를 Embedded Device 환경에 적합하도록 구현합니다.
        • 신경망을 훈련하고 구동하는 특히, Device 환경에 맞는 각종 최적화 기법을 동원합니다. 메모리 및 에너지 최적화를 포함하며, VGG16기준 TF-Lite대비 메모리를 1/10미만으로 사용하면서 더 빠르게 훈련되고 더 다양한 학습방법을 제공합니다.
      • NNTrainer를 이용한 응용 제품 개발 지원 및 On-device AI 개인화 알고리즘 연구자들과의 공동연구를 수행합니다.
        • AI 개인화 알고리즘을 Framework에 탑재하고 App개발자들이 쉽게 쓸 수 있도록 제공합니다.
        • Meta-learning, Few-shot learning, Early-exit, Continuous learning, Federated learning 등의 연구 기반을 제공합니다.\
      • Skill Set
        • C++ 개발 (Professional)
        • 신경망 모델 이해 (Intermediate / Back-prop 구현 및 Network 구성 가능)
        • 영어 (오픈소스 활동 및 해외 개발자와의 의사소통)
        • OS 및 System S/W 이해 (학부수준)
        • (부가) Design Pattern, C++14,
    • ML API 개발
      • NNStreamer 및 NNTrainer 를 사용하는 Application을 보다 쉽게 작성할 수 있도록 API를 제공/관리 합니다.
      • Device 내의 AI Service의 수명주기를 관리하고 App이나 다른 주변 Device에게 제공하는 Daemon도 포함됩니다.
        • 수명주기 관리: 신경망 모델과 파이프라인로 이뤄진 AI Service 의 등록/제거/업데이트/조회/권한제어 등
      • Among-Device AI system ( https://arxiv.org/abs/2201.06026 ) 을 위한 AI module deployment 모듈과 Matter/SmartThings 개발이 포함됩니다.
      • Skill Set
        • C/C++ 개발 (Professional)
        • (부가) .NET, Web App, Linux Daemon
    • MLOps Engineer
      • On-Device AI 모델 변환, 시험, 데이터 관리, Device 혹은 Platform 배포를 포함하는 ML Pipeline과 Device 배포 이후 Device 내에서의 Data 및 Model, Pipeline을 포함한 Device 내 MLOps System을 개발합니다.
  • 논문 발표 및 코드 공개 적극 지원해 드립니다. (모든 과제는 오픈소스 진행이 기본 원칙입니다.)

Place: Samsung Research (서울 서초구 우면동)
Contact: myungjoo.ham at samsung-com ( @myungjoo )

Metadata

Metadata

Assignees

Labels

Non-TechnicalTopics not directly related with technical aspects of nnstreamer

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions