import streamlit as st import pandas as pd from ecologits.impacts.llm import compute_llm_impacts from src.utils import format_impacts, average_range_impacts, format_impacts_expert, model_active_params_fn, model_total_params_fn from src.impacts import display_impacts #from src.constants import PROVIDERS, MODELS from src.electricity_mix import COUNTRY_CODES, find_electricity_mix, dataframe_electricity_mix from ecologits.model_repository import models import plotly.express as px def reset_model(): model = 'CUSTOM' def expert_mode(): st.markdown("### π€ Expert mode") with st.container(border = True): ########## Model info ########## # col1, col2, col3 = st.columns(3) # with col1: # provider = st.selectbox(label = 'Provider expert', # options = [x[0] for x in PROVIDERS], # index = 0) # provider = [x[1] for x in PROVIDERS if x[0] == provider][0] # if 'huggingface_hub' in provider: # provider = 'huggingface_hub' # with col2: # model = st.selectbox('Model expert', [x[0] for x in MODELS if provider in x[1]]) # model = [x[1] for x in MODELS if x[0] == model][0].split('/', 1)[1] ########## Model parameters ########## col11, col22, col33 = st.columns(3) with col11: # st.write(provider, model) # st.write(models.find_model(provider, model)) # st.write(model_active_params_fn(provider, model, 45)) active_params = st.number_input('Active parameters (B)', 0, None, 45) with col22: total_params = st.number_input('Total parameters (B)', 0, None, 45) with col33: output_tokens = st.number_input('Output completion tokens', 100) ########## Electricity mix ########## location = st.selectbox('Location', [x[0] for x in COUNTRY_CODES]) col4, col5, col6 = st.columns(3) with col4: mix_gwp = st.number_input('Electricity mix - GHG emissions [kgCO2eq / kWh]', find_electricity_mix([x[1] for x in COUNTRY_CODES if x[0] ==location][0])[2], format="%0.6f") #disp_ranges = st.toggle('Display impact ranges', False) with col5: mix_adpe = st.number_input('Electricity mix - Abiotic resources [kgSbeq / kWh]', find_electricity_mix([x[1] for x in COUNTRY_CODES if x[0] ==location][0])[0], format="%0.13f") with col6: mix_pe = st.number_input('Electricity mix - Primary energy [MJ / kWh]', find_electricity_mix([x[1] for x in COUNTRY_CODES if x[0] ==location][0])[1], format="%0.3f") impacts = compute_llm_impacts(model_active_parameter_count=active_params, model_total_parameter_count=total_params, output_token_count=output_tokens, request_latency=100000, if_electricity_mix_gwp=mix_gwp, if_electricity_mix_adpe=mix_adpe, if_electricity_mix_pe=mix_pe ) impacts, usage, embodied = format_impacts(impacts) with st.container(border = True): st.markdown('