o
    㥵i                     @   sb   d dl Z d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ G dd	 d	ZdS )
    N)logger)TTSInferenceEngine)
load_model)launch_thread_safe_queue)ServeTTSRequest)inference_wrapperc                   @   sX   e Zd Zdedededededededd	fd
dZ			dddZdddZdddZd	S )ModelManagermodedevicehalfcompilellama_checkpoint_pathdecoder_checkpoint_pathdecoder_config_namereturnNc                 C   s   || _ || _|| _|| _|rtjntj| _tjj	 r$d| _t
d ntj	 s1d| _t
d | || j| j| j| j  | ||| j t| j| j| j| jd| _| j dkr`| | j d S d S )Nmpsz!mps is available, running on mps.cpuz&CUDA is not available, running on CPU.)llama_queuedecoder_model	precisionr   tts)r	   r
   r   r   torchbfloat16r   backendsr   is_availabler   infocudaload_llama_modelload_decoder_modelr   r   r   tts_inference_enginewarm_up)selfr	   r
   r   r   r   r   r    r"   N/home/ubuntu/.local/lib/python3.10/site-packages/tools/server/model_manager.py__init__   s4   


zModelManager.__init__c                 C   s8   |dkrt ||||d| _ntd| td d S )Nr   )checkpoint_pathr
   r   r   zInvalid mode: zLLAMA model loaded.)r   r   
ValueErrorr   r   )r!   r%   r
   r   r   r	   r"   r"   r#   r   8   s   
zModelManager.load_llama_modelc                 C   s   t |||d| _td d S )N)config_namer%   r
   zDecoder model loaded.)r   r   r   r   )r!   r'   r%   r
   r"   r"   r#   r   H   s   zModelManager.load_decoder_modelc                 C   s6   t dg d ddddddd	}tt|| td d S )	NzHello world.i      gffffff?g333333?wav)	text
referencesreference_idmax_new_tokenschunk_lengthtop_prepetition_penaltytemperatureformatzModels warmed up.)r   list	inferencer   r   )r!   r   requestr"   r"   r#   r    P   s   zModelManager.warm_up)r   N)	__name__
__module____qualname__strboolr$   r   r   r    r"   r"   r"   r#   r      s.    	
,

r   )r   logurur   fish_speech.inference_enginer    fish_speech.models.dac.inferencer   r   *fish_speech.models.text2semantic.inferencer   fish_speech.utils.schemar   tools.server.inferencer   r4   r   r"   r"   r"   r#   <module>   s    