  Artificial intelligence (AI) technologies have dramatically advanced in
recent years, resulting in revolutionary changes in people's lives. Empowered
by edge computing, AI workloads are migrating from centralized cloud
architectures to distributed edge systems, introducing a new paradigm called
edge AI. While edge AI has the promise of bringing significant increases in
autonomy and intelligence into everyday lives through common edge devices, it
also raises new challenges, especially for the development of its algorithms
and the deployment of its services, which call for novel design methodologies
catered to these unique challenges. In this paper, we provide a comprehensive
survey of the latest enabling design methodologies that span the entire edge AI
development stack. We suggest that the key methodologies for effective edge AI
development are single-layer specialization and cross-layer co-design. We
discuss representative methodologies in each category in detail, including
on-device training methods, specialized software design, dedicated hardware
design, benchmarking and design automation, software/hardware co-design,
software/compiler co-design, and compiler/hardware co-design. Moreover, we
attempt to reveal hidden cross-layer design opportunities that can further
boost the solution quality of future edge AI and provide insights into future
directions and emerging areas that require increased research focus.
