
    Xi[j                        S r SSKrSSKrSr SSKJr  \(       d  \R                  R                  \5      r	\R                  R                  \R                  R                  \	5      5      r\R                  R                  \S5      r\R                  R                  \S5      r\R                  R                  \5      (       a  \" \5        \" S\ 35        O4\R                  R                  \5      (       a  \" \5        \" S\ S35        S	rS
 H  r\R&                  R)                  \S5        M!     S\R&                  S'    SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJ r J!r!  SSK"J#r#J$r$J%r%J&r&J'r'J(r(J)r)J*r*  SSK+J,r,  SS jr6S\7S-  S\74S jr8S r9\:S:X  a  \9" 5         gg! \ a     Nf = f! \ a    \R                  R                  \R                  R                  \R                  R                  \5      5      5      r-\-\R                  ;  a  \R                  R]                  S\-5        SSK/Jr  SSK0Jr  SSK1Jr  SSK2Jr  SSK3Jr  SSKJ r J!r!  SSK4J#r#J$r$J%r%J&r&J'r'J(r(J)r)J*r*  SSK5J,r,   Nf = f)z@
ACE-Step V1.5 Pipeline
Handler wrapper connecting model and UI
    NF)load_dotenvz.envz.env.examplezLoaded configuration from z (fallback)T)
http_proxyhttps_proxy
HTTP_PROXYHTTPS_PROXY	ALL_PROXYffmpegTORCHAUDIO_USE_BACKEND   )parse_quantization_arg)AceStepHandler)
LLMHandler)DatasetHandler)create_gradio_interface)get_i18navailable_languages_info)get_gpu_configget_gpu_memory_gbresolve_lm_backendprint_gpu_config_infoset_global_gpu_configVRAM_16GB_MIN_GBVRAM_AUTO_OFFLOAD_THRESHOLD_GBis_mps_platform)ensure_lm_modelc                     U (       a'  U R                  S5      (       a  SU ;   a  U S   nU S   nO[        5       n[        5       n[        5       n[	        UUUU US9nU$ )a  
Create Gradio demo interface

Args:
    init_params: Dictionary containing initialization parameters and state.
                If None, service will not be pre-initialized.
                Keys: 'pre_initialized' (bool), 'checkpoint', 'config_path', 'device',
                      'init_llm', 'lm_model_path', 'backend', 'use_flash_attention',
                      'offload_to_cpu', 'offload_dit_to_cpu', 'init_status',
                      'dit_handler', 'llm_handler' (initialized handlers if pre-initialized),
                      'language' (UI language code)
    language: UI language code ('en', 'zh', 'ja', default: 'en')

Returns:
    Gradio Blocks instance
pre_initializeddit_handlerllm_handlerinit_paramslanguage)getr   r   r   r   )r!   r"   r   r   dataset_handlerdemos         ;/mnt/workspace/ACE-Step-1.5/acestep/acestep_v15_pipeline.pycreate_demor'   W   sl    & 	OO-..[(!-0!-0$& l$&O #D K    requested_backendreturnc                     [        X5      nU =(       d    SR                  5       R                  5       nU(       a  X2:w  a  [        SU SU S35        U$ )zKResolve the startup LM backend against hardware compatibility restrictions. zRequested LM backend 'z,' is not supported on this hardware. Using 'z
' instead.)r   striplowerprint)r)   
gpu_configresolved_backendnormalized_backends       r&   _resolve_startup_lm_backendr3      s_    )*;H+1r88:@@B0D$%7$8 9&'z3	

 r(   c                  Z    SSK n [        5       n[        U5        UR                  n[	        5       nU(       + =(       a    US:  =(       a	    U[
        :  nUR                  n[        SS 35        [        S5        [        S 5        [        SUS S35        [        S	UR                   35        [        S
UR                   SUR                  S-   S35        [        SUR                   SUR                  S-   S35        [        SUR                   35        [        SUR                   35        [        SUR                   35        [        SUR                  =(       d    S 35        [        S S35        U(       a  [        SUS SU 35        OHU(       a  [        SUS S[
         S35        O)US:  a  [        SUS S[
         S35        O[        S5        [        R                   R#                  [        R                   R#                  [        R                   R%                  [&        5      5      5      n[        R                   R)                  US5      nUR+                  SS5      n[        R,                  " US S!9  [        S"U 35        [/        5         U R1                  S#U R2                  S$9nUR5                  S%[6        S&S'S(9  UR5                  S)S*S+S,9  UR5                  S-S*S.S,9  UR5                  S/[8        S0S1S(9  [;        5       n	UR5                  S2[8        S3U	 V
s/ s H  oS   PM	     sn
S4S5R)                  S6 U	 5       5      -   S79  A	UR5                  S8S9/ S:S;9  UR5                  S<S= S>S?S(9  UR5                  S@SA S>SBS(9  UR5                  SC[8        SSDS(9  UR5                  SE[8        SSFS(9  UR5                  SG[8        SH/ SIQSJS79  UR5                  SKSL SSMS(9  UR5                  SN[8        SSOS(9  UR5                  SP[8        U/ SQQSRU SS3S79  UR5                  STSU SSVS(9  UR5                  SWSX USYU(       a  SZOS[ S\3S(9  U(       d  UR<                  OS>nUR5                  S]S^ US_U S`3S(9  SnUR>                  (       aR  U(       dK  San SSK nURB                  RE                  5       (       a%  URB                  RG                  S5      u  pUSb:  a  ScnUR5                  Se[N        USfU S`3S(9  UR5                  Sg[8        S/ ShQSiS79  UR5                  Sj[6        SSkS(9  UR5                  SlS*SmS,9  UR5                  Sn[8        SSoS(9  UR5                  Sp[8        SSqS(9  UR5                  Sr[8        SSsS(9  URQ                  5       nURR                  (       a  S Ul*        URV                  c$  [        RX                  R[                  St5      Ul+        UR\                  c$  [        RX                  R[                  Su5      Ul.        [        RX                  R[                  Sv5      (       a$  [        RX                  R[                  Sv5      Ul/        UR`                  (       a  [        Sw5        S Ul*        URV                  c%  [        RX                  R[                  SxSy5      Ul+        UR\                  c%  [        RX                  R[                  SzS{5      Ul.        [        RX                  R[                  S|S}5      Ul/        [        S~URV                   35        [        SUR\                   35        [c        UR^                  U5      Ul/        UR`                  (       a  [        SUR^                   35        URd                  (       dH  UR\                  (       a7  SUR\                  ;   a'  SUs=:  a  S::  a  O  OS Ul2        [        SUS S35        UR\                  (       aY  SUs=:  a
  [
        :  aH  O  OESUR\                  ;   a5  UR\                  R+                  SS5      n[        SUS SU 35        UUl.         SnSnSnURT                  (       Ga  [        S5        [g        5       n[i        5       nURV                  cp  URk                  5       nU(       a+  SU;   a  SOUS   Ul+        [        SURV                   35        O.[        S[l        Rn                  S9  [l        Rp                  " S5        [        R                   R%                  [&        5      n[        R                   R#                  [        R                   R#                  U5      5      nURr                  nUc  URu                  URv                  5      nSnURx                  (       a*  URx                  SH:w  a  URx                  n[        SU 35        [        SURV                   SURv                   S35        [        RX                  R[                  SS5      R{                  5       R}                  5       S;   nUR                  UURV                  URv                  UUURd                  UR                  UR                  US9	u  nnU(       d1  [        SU 3[l        Rn                  S9  [l        Rp                  " S5        [        S5        UR                  c*  UR                  UlB        [        SUR                   S35        SnUR                  (       Ga  UR\                  cY  UR                  5       nU(       a#  US   Ul.        [        SUR\                   35        O[        S[l        Rn                  S9  S>UlB        UR                  (       Ga?  UR\                  (       Ga-  [        R                   R)                  US5      nSnURx                  (       a  URx                  SH:w  a  URx                  n [        UR\                  UUS9u  n n!U (       d  [        SU! 3[l        Rn                  S9  [        SUR\                   SURv                   S35        UR                  UUR\                  UR^                  URv                  URd                  SS9u  nn#U#(       a  [        S5        USU 3-  nO#[        SU 3[l        Rn                  S9  USU 3-  n0 SS _SUR`                  _SUR                  _SURV                  _SURv                  _SUR                  _SUR\                  _SUR^                  _SU_SURd                  _SUR                  _SUR                  _SU_SU_SU_SU_SUR                  _UUUR                  S.En[        S5        [        SUR                   S35        Uc  UUR                  UUR                  S.n[        UUR                  S9n$[        S5        U$R                  SSHSS9  [        SUR                   SUR                   S35        Sn%UR                  (       a4  UR                  (       a#  UR                  UR                  4n%[        S5        U/n&UR                   H%  n'U'(       d  M  U'U&;  d  M  U&R                  U'5        M'     URR                  (       a  [        S5        SSKQJRn(  U$R                  UR                  UR                  UR                  UR                  S S S>U%U&S9	  U(" U$UUUR                  S9  UR                  (       a  [        S5        [        S5          SSKWn)U)R                  S5        M  U$R                  UR                  UR                  UR                  UR                  S S>S>U%U&S9	  gs  sn
f ! [H         a!  n[J        RM                  SdU5         SnAG
NSnAff = f! [H         a&  n"[        SU" 3[l        Rn                  S9   Sn"A"GNSn"A"ff = f! [         a    [        S5         gf = f! [H         aO  n"[        SU" 3[l        Rn                  S9  SSKZn*U*R                  5         [l        Rp                  " S5         Sn"A"gSn"A"ff = f)zMain entry functionr   N
z<============================================================zGPU Configuration Detected:z  GPU Memory: z.2fz GBz  Configuration Tier: z  Max Duration (with LM): zs (<   z min)z  Max Duration (without LM): z  Max Batch Size (with LM): z  Max Batch Size (without LM): z  Default LM Init: z  Available LM Models: Noneu5   Apple Silicon (MPS) detected â€” unified memory z.1fz#GB, no CPU offload needed, backend=zAuto-enabling CPU offload (GPU zGB < zGB threshold)z%CPU offload disabled by default (GPU zGB >= zNo GPU detected, running on CPUgradio_outputs\/T)exist_okzOutput directory: zGradio Demo for ACE-Step V1.5)descriptionformatter_classz--porti  z Port to run the gradio server on)typedefaulthelpz--share
store_truezCreate a public link)actionr@   z--debugzEnable debug modez--server-namez	127.0.0.1z@Server name (default: 127.0.0.1, use 0.0.0.0 for all interfaces)z
--languageenzUI language:
  z
  c              3   T   #    U  H  u  pnUS U 3-   X#:w  a  SU S3OS-   v   M      g7f)z (r:   )N ).0codenamenative_names       r&   	<genexpr>main.<locals>.<genexpr>   sI       0C+D {m$%"&"5QtfA;3@ 0Cs   &()r>   r?   choicesr@   z--allowed-pathappendz6Additional allowed file paths for Gradio (repeatable).)rB   r?   r@   z--service_modec                 (    U R                  5       S;   $ N)true1yesr.   xs    r&   <lambda>main.<locals>.<lambda>       qwwy$88r(   Fz`Enable service mode (default: False). When enabled, uses preset models and restricts UI options.z--init_servicec                 (    U R                  5       S;   $ rP   rT   rU   s    r&   rW   rX     rY   r(   z.Initialize service on startup (default: False)z--checkpointz5Checkpoint file path (optional, for display purposes)z--config_pathz+Main model path (e.g., 'acestep-v15-turbo')z--deviceauto)r[   cudampsxpucpuz!Processing device (default: auto)z
--init_llmc                 (    U R                  5       S;   $ rP   rT   rU   s    r&   rW   rX      rY   r(   z5Initialize 5Hz LM (default: auto based on GPU memory)z--lm_model_pathz/5Hz LM model path (e.g., 'acestep-5Hz-lm-0.6B')z	--backend)vllmptmlxz5Hz LM backend (default: z2, use 'mlx' for native Apple Silicon acceleration)z--use_flash_attentionc                 (    U R                  5       S;   $ rP   rT   rU   s    r&   rW   rX   3  rY   r(   z*Use flash attention (default: auto-detect)z--offload_to_cpuc                 (    U R                  5       S;   $ rP   rT   rU   s    r&   rW   rX   9  rY   r(   z Offload models to CPU (default: TrueFalsez", auto-detected based on GPU VRAM)z--offload_dit_to_cpuc                 (    U R                  5       S;   $ rP   rT   rU   s    r&   rW   rX   B  rY   r(   z-Offload DiT to CPU after diffusion (default: z", auto-detected based on GPU tier)int8_weight_only   w8a8_dynamiczR[parse_args] CUDA capability probe failed while resolving quantization default: {}z--quantizationz\DiT quantization method: int8_weight_only, fp8_weight_only, w8a8_dynamic, or none (default: z--download-source)huggingface
modelscoper[   zGPreferred model download source (default: auto-detect based on network)z--batch_sizezUDefault batch size for generation (1-8). Defaults to min(2, GPU_max) if not specifiedz--enable-apiz%Enable API endpoints (default: False)z--auth-usernamez"Username for Gradio authenticationz--auth-passwordz"Password for Gradio authenticationz	--api-keyz(API key for API endpoints authenticationACESTEP_CONFIG_PATHACESTEP_LM_MODEL_PATHACESTEP_LM_BACKENDz8Service mode enabled - applying preset configurations...SERVICE_MODE_DIT_MODELz(acestep-v15-turbo-fix-inst-shift-dynamicSERVICE_MODE_LM_MODELzacestep-5Hz-lm-1.7B-v4-fixSERVICE_MODE_BACKENDra   z  DiT model: z  LM model: z  Backend: 4B   z>Auto-enabling CPU offload (4B LM model requires offloading on z.0fzGB GPU)z1.7Bz&WARNING: 4B LM model is too large for z%GB GPU. Downgrading to 1.7B variant: z)Initializing service from command line...zacestep-v15-turbozAuto-selected config_path: z>Error: No available models found. Please specify --config_path)filer   z!Using preferred download source: zInitializing DiT model: z on z...ACESTEP_COMPILE_MODELr,   >   rR   yonrS   rQ   )	project_rootconfig_pathdeviceuse_flash_attentioncompile_modeloffload_to_cpuoffload_dit_to_cpuquantizationprefer_sourcezError initializing DiT model: z"DiT model initialized successfullyzAuto-setting init_llm to z based on GPU configurationzUsing default LM model: z;Warning: No LM models available, skipping LM initializationcheckpoints)
model_namecheckpoints_dirr   z#Warning: LM model download failed: z&Warning: Failed to download LM model: zInitializing 5Hz LM: )checkpoint_dirlm_model_pathbackendr|   r   dtypez5Hz LM initialized successfullyz'Warning: 5Hz LM initialization failed: r   service_mode
checkpointr{   r|   init_llmr   r   r}   r   r   r   init_statusenable_generater   r   r"   )r0   
output_dirdefault_batch_sizez.Service initialization completed successfully!z)Creating Gradio interface with language: )r0   r"   r   r   r    z(Enabling queue for multi-user support...   )max_sizestatus_update_ratedefault_concurrency_limitzLaunching server on :zAuthentication enabledzEnabling API endpoints...)setup_api_routes)	server_nameserver_portsharedebug
show_errorprevent_thread_lock	inbrowserauthallowed_paths)api_keyzAPI authentication enabledzoAPI endpoints enabled: /health, /v1/models, /release_task, /query_result, /create_random_sample, /format_lyricsz
Shutting down...zError launching Gradio: )\argparser   r   gpu_memory_gbr   r   recommended_backendr/   tiermax_duration_with_lmmax_duration_without_lmmax_batch_size_with_lmmax_batch_size_without_lminit_lm_defaultavailable_lm_modelsospathdirnameabspath__file__joinreplacemakedirsr   ArgumentParserRawTextHelpFormatteradd_argumentintstrr   offload_dit_to_cpu_defaultquantization_defaulttorchr\   is_availableget_device_capability	Exceptionloggerwarningr   
parse_args
enable_apiinit_servicer{   environr#   r   r   r   r3   r   r   r    get_available_acestep_v15_modelssysstderrexitr}   is_flash_attention_availabler|   download_sourcer-   r.   initialize_servicer   r   r   get_available_5hz_lm_modelsr   
initializer   r"   
batch_sizer'   queuer   portauth_usernameauth_passwordallowed_pathrN    acestep.ui.gradio.api.api_routesr   launchr   r   r   timesleepKeyboardInterrupt	traceback	print_exc)+r   r0   r   _is_macauto_offload_default_backendrz   r   parseravailable_languagesr"   _default_offload_dit_default_quantizationr   major_excargsfallbackr!   r   r   available_modelscurrent_filer}   r   r~   r   r   	lm_statusr   r   dl_okdl_msge
lm_successr%   r   r   pr   r   r   s+                                              r&   mainr      s|     !J*%,,MG  	;A	;:: 
 "55 
Bxj/	
'(	XJ	N=-S
12	":??"3
45	
$Z%D%D$ESIhIhlnInHootu 

'
(J(J'K3zOqOquwOwNxx}~ 
()J)J(K
LM	+J,P,P+Q
RS	
 : :;
<=	#J$B$B$Lf#M
NO	XJb/CMRUCVVy  {K  zL  M	
 
-mC-@FdEeers	
 
	3M#3FfMkLllyz	
 	/0 77??277??277??83L#MNLl,<=J##D#.JKK
T*	zl
+, J$$3 55 % F sD/Q   	,=ST
	,=PQ
O	   34
-@A-@!-@A
++ 0C	

   	
E	   8o	   8=	   D	   :	   50   8D	   >	    %()9(::lm   89	   8/,G/TTvw	   6=
--%  8$<=Q<RRtu	   !&&w 2
	zz&&(( ::;;A>19,:) #%.//QS  	 5V   d	   4   1	   1	   7	   D  #!zz~~.CDD%!#0G!HD::>>.//::>>*>?DL HI #!zz~~(*T D %!#')E"D zz~~&<fEd../01T//012.t||ZHDLDLL>*+ 4#5#5$$BTBT:T}"""&DPQ^_bPccjk a-P2PP4%%%))11$?H8s8K L008z; "*D~ => )*K$,K '#.#O#O#Q # /2BB ,-a0 $
 78H8H7IJKX ZZ HHQK 77??84L77??277??<+HIL #'":":"*&1&N&NKK'#
 !M##(<(<(F $ 4 49-IJ ,T-=-=,>d4;;-sSTJJNN'egeeg!@AM ,7+I+I) ,,{{$7+#22#'#:#:!..+ ,J 
,(K #6{mD3::V68 }}$ * : :/>YZ I}}}%%-*5*Q*Q*S'*-@-C* 89K9K8LMNY!$ ).===T%7%7%7%'WW\\,%NN %)M++0D0D0N(,(<(<(7'+'9'9,:*7)v
  %!"EfX N%(ZZ /0B0B/C4}TWX -8,B,B'5&*&8&8 $#{{'+':':" -C -)Iz " ?A#I;'77Ei[Q!$ $I;'77!4 1 1 doo t//	
 $++ DMM  !3!3 4<< &': !$"5"5 %d&=&=  1 1 { "? {  {!" DMM#$ )(&*oo)K. BC 	9$--LM ( MM(&*oo	K {T]]K 	89

%&' 	 	
 	$T%5%5$6a		{#FG $"4"4&&(:(:;D*+#""AqQm+$$Q' #
 ??-.I KK ,, IIjjjj$(+  
 T;T\\R||23 B
,JJqM  KK ,, IIjjjj$)+  
S BN  	NNd 	H % DQCH!$ v % ,*+,  (,3::>s   }A} "N 5:~ /I ? B0 8~6 ? 
~ };;~ 
~3~.( .~33 6  
A@*AA@%@%A@*__main__)NrC   );__doc__r   r   _env_loadeddotenvr   r   r   r   _current_filer   _project_rootr   	_env_path_env_example_pathexistsr/   ImportError	proxy_varr   popcli_argsr   handlerr   llm_inferencer   r$   r   	ui.gradior   acestep.ui.gradio.i18nr   r   r0   r   r   r   r   r   r   r   r   model_downloaderr   rz   insertacestep.cli_argsacestep.handleracestep.llm_inferenceacestep.dataset_handleracestep.ui.gradioacestep.gpu_configacestep.model_downloaderr'   r   r3   r   __name__rF   r(   r&   <module>r
     s	  
 
 
 	"1(FGGGLL7	GGLLG77>>)$$	".yk:;WW^^-..)*./@.AMNI JJNN9d# (0

# $(90')/2I	 	 	 22(V3: c qh zF S  		H  977??277??277??83L#MNL388#<(7.069I	 	 	 9+9s&   C>F$ A F0 $F-,F-0B?I21I2