Hello, everyone. This is Eden from Chinese Academy of Sciences. I now talk about my paper tied to the individual simulations. This is the outline of this talk. First, we will give you a brief introduction to the problem. I would like to start with a formal statement of a typical theorem, which usually states that if an assumption X holds then the construction Y is skewed. We often pull such a theorem by a universal reduction where we simply construct a reduction R, such that for any adversary A that breaks Y, the reduction R can break the underlying assumption X. However, for most security definitions, it switches to quantifiers and requires only existential proof. That is, we just need to show that for every adversary A that exists, there exists a reduction R. And then we also note that there may be a huge gap between these two reduction methods. In the universal reductions, R has only access to its codos, the adversary A, but in individual reductions, R may depend on any properties of the function to your way. In this paper, we will focus on simulation-based security. Up to date, almost all simulation strategies are universal. This includes black box simulation techniques and black box non-black box simulation techniques. It seems to us that the individual simulation seems to be much powerful. And this is implicitly mentioned in several works such as Chang-Lei-Pos in TCC-15, then in Your Equivital, 17. In this paper, we mainly develop such a simple individual simulation technique and then construct two protocols that breaks the long black box barriers for the first time on the standard assumption. And this part of us enjoys a somewhat weaker security called TAPS security, where the simulation depends on the size of the distinguish and the error probability we tolerate. And we also simplify the constructions and the security pool through the existing low-round, weak-zooner protocol in the play model. Now we talk about our simulation technique. For now, we just assume we already have a two-round protocol AB with two good properties. This construction is similar to recent breakthroughs in weak-zooner protocol and the constructions that use condition disclosure schemes. In this protocol, the party B simply samples an MP instance Y to a send-back MSCM. We assume the protocol enjoys two properties. The first is low-round witness to Y enables us to give a successful simulation. The second is distinguishing an honest MSCM from a dummy MSCM is equivalent to extracting a witness Y. Now we can see the absolute adversary B and our question is how to simulate the honest party A. Here we just want a long-defined simulate rather than distinguish dependent one. We note that the two cases in which the simulator will be the first is the simulator succeeds to extract a witness to Y, second one is if the simulator fails then we need to make sure that no other efficient algorithms can succeed and of course the black box extractor would fail in this set because we cannot extract the witness by rewinding the adversary B. What about the individual extractor? We just mentioned such an extractor knows the randomness of B and can depend on any properties of the functionality of B. However, these two cases in which the simulator will win indicates that we may need an optimal individual extractor that outperforms all other efficient algorithms. The problem with this approach is that it seems hard to bond the sides of the extractor and it may run in super polynomial time. For this reason we resort to the weaker simulatability called T-epsilon simulatability. Now we just need a T-epsilon optimal extractor that outperforms all sets of sides T acceptable for probability epsilon. Fortunately, we are able to show the existence of such an optimal extractor. The procedure for constructing such an extractor is as follows. Firstly, we can pick an option algorithm E and then for i from 1 to 1 over epsilon we ask a question at each step i. Does it exist a 6co size T such that the probability that the current extractor fails to extract a weakness but the 6c wins. It's greater than epsilon and if the answer is yes then we now have a new extractor by simply combining these two sets which output a valid witness if one of these two sets output a valid witness. Compared to the extractor we have at the beginning with step the success probability of the new extractor increases by at least epsilon. Thus, if for any step i the answer is yes then at the end of this procedure we will have an extractor with success probability 1 which is of course optimal. Otherwise, if for some step i the answer to this question is no then we also have a T epsilon optimal extractor. The final extractor returned by its procedure is of size at most T over epsilon. So we prove that for any mp instance sampling algorithm B we have a T epsilon optimal extractor E and we now give two examples to explain how the extractor E depends on the functionality of B. We can see that y is an image of one-way permutation f and in the first example the algorithm B chooses an r from the domain of f and then compute f r. For this algorithm we have an optimal extractor E that takes r and y as input and just outputs r. In the second example the algorithm B simply samples an r from the range of f and then outputs r. For this algorithm B an arbitrary algorithm can also be optimal. This is because f is one-way and low algorithm can compute a random y. For the purpose of our applications we need to consider T instance sampling algorithm B that outputs T instance simultaneously. For such a sampling algorithm B we want a robust T epsilon optimal extractor that outperforms any sexy C of size T except for probability epsilon in each co-ordinate. We also require these to hold even if the sexy takes the output of the extractor as input. For such a T instance sampling algorithm B we also have an T epsilon robust T epsilon optimal extractor of polynomial size which is optimal in every co-ordinate high. Here allows us to allow the sexy to take the output of the extractor as input. For this change we need to make some careful modifications to the various procedures for constructing an optimal extractor. Now if the protocol A B satisfies these two properties then with the T epsilon optimal extractor we can achieve T epsilon similar to B native 4A. Here the simulator simply applies the extractor and tries to extract the witness to why and if the extractor succeeds then we are done and if the extractor fails then the simulator can send back a dummy message which is indistinguishable from the real world. This is because of the second property of the protocol A B. We now tend to our constructions. A key ingredient for constructions with these two properties is a variant of Robin's encryption scheme which is basically a regular approach to encryption. The public key is the Blumint to M and the secret key is the prime factor when this defines the trapdoor of a permutation F which maps the quadratic residue S to S squared modulo N. To encrypt a bit M one chooses R and then compute F R as the first part of the self-tax. The second part of the self-tax is the hardcore R, XOR, B to M. Implied by the REC, COMPRA and VOR we have that for any integer N. Distinguishing self-taxes is equivalent to extracting a prime factor of N and we will use these properties to establish the second property of protocol A B. And here we just let the party B send a public key N to A and then the party A sends back a self-tax under the public key N. With these ideas we now give two constructions. The first is the two-round SOI skill commitment scheme. We use two primitives, encryption scheme just mentioned and trapdoor commitment schemes defined over the public key N. And trapdoor is the secret key P. That means if one loads the secret key P then it can open a given commitment to any value at its wish. In the committing phase, the receiver sends a long integer N to the sender. Then the sender computes a commitment to B and encrypts this commitment C and sends it back to the receiver. And in the opening phase, send computes openings and sends B and a decommitment to the receiver. And the receiver first decrypts the self-tax he received in the committing phase and then check that B and decommitment is a valid opening for C. Bidding property follows from the fact that two valid openings need to affect N. And the T-epsilon SOI security follows from the following two observations. We first observe that this scheme is almost critical in the known settings. Here we think about it. We are given a commitment. And then we can apply the T-epsilon optimal extractor and try to extract the effect. If the extractor succeeds, then we can use the trapdoor to open the given commitment to any venue. And if the extractor fails, then we can also open it to any venue B. This is because the failure with the optimal extractor implies that low other sects can extract the secret key or the prime factor when, which in 10 implies that low other sects of size T can decrypt the self-tax received in the committing phase. And then in this setting, we can pretend that actually B and decommitment is a valid opening for some commitment C, which may not be related to the plain text encrypted in the self-tax sent by the send in the committed phase. Now we take a close look at the SOA attack in which the adversary receiver or star is allowed to initiate sessions for some polynomial T. It stops when T integers 1, 2, and T. And then the send sends back T commitments of that the receiver or star asks the send to open a subset of these commitments. And now we can apply the robust tips to the optimal extractor to such a receiver or star. And combining the observations to further observations we will have two absolute simulators for the attacker on the parallel repetition. We now tend to the three-round concomitance of knowledge in the BPK model. And here we use the same encryption scheme and the three-round schema protocol we denote the three messages exchanged in a session by A, E, and C. And in the key generation phase we have to verify write a pair of public key on the public file F. And in the proof phase P and V execute the three-round sigma protocol to prove that X is in L. Or I know a secret key of N0 and 1 to achieve the concomitance of knowledge we have we modify this protocol slightly and they have the pool where encrypt the last message twice on the each public key. At last they verify decrypt this side text and then check C for these two plain texts are equal and A, E, Z is accepting. The concomitance soundness is similar to the soundness pool for the classical function of protocol in the plain model, which essentially says a break in concomitance soundness needs to factor in integer M. And using this reasoning similar to SOSQ commitment scheme we can also construct a T-absorbed simulator for an adversary verify. We disseminate it first applies the T-absorbed optimal extractor to the key generation phase of the verify and tries to extract a prime factor for each parallel public key. Now if the extractor succeeds then we are done. And if this extractor fails for some parallel public key then the disseminate can encrypt all zeros in the last step of the session on this public key, which is indistinguishable from the real-world execution. We can also apply these ideas, tactics to construct a two-round T-absorbed simulator for Zoology in the plain model and these techniques can also be used to simplify the security proofs of the existing Zoology in the plain model. Here in summary we developed a very simple simulation technique and constructed two simple protocols that breaks the lone black box barriers for the first time and we also simplified the constructions and the security proofs of the existing Zoology in the plain model. Thank you.


首先非常感谢大家的到来看起来其实我们来是可以用中文讲但是因为我准备的是英文然后相信大佬们也能听懂我说的英文所以我后续会用英文来演讲OK, first thing firstThank you so much for being hereIt's my great honor to make this presentation todayI am a wisdom engineer from the Opsol BF team at Alibaba Cloudand I am going to show you our explanationin using AI GC technologies in the Opsol BFOK, please allow me to introduce myselfand the service we provideOK, I work in the Opsol BF teamand the service we provide is called AMSwhich means the Application Real Time Monitoring Serviceand it can be assessed in Alibaba Cloudand for me I specialize in AI OpsHere AI Ops means we are using algorithmsof course including machine learning algorithmsto make the morning season easier, saver, and fasterand by the way, I am a doctorand I work in AI Opswe have four parts for today's presentationand the first part is aboutwhy do we need a natural language to promote culture?and the second part is the role we have takenand not only going to show you the technologiesthat we have tried and turns out to be effectivebut also the technologies that we havemade many experiments and it turns outthey are not as helpful as we expectand the third part iswhere are we now?I am going to show you a demoof our Natural Language to PromCal Chapeland the first part is about the future developmentso what is PromCal?PromCal is the query languageis the query language intime series database for promisilsand promisils is calledthe de facto standard forcooperative applicationhere the de facto standard means thatalmost all of the matchesthat we correct from thecooperative applicationwill be de facto and will be queryin promisils databaseand we can see an example herewe can use thewe can use the promcal hereto get the top ten applicationswith the highest response timeand so why do we need a chatbook?it's like the answer lies in three Cstheir first C is aboutstands for complexcause the syntaxin all the grammarin promcal isvery complexcause it is very differentfrom the conventionalsecal languagecause we do withthe promcal do withthe matches thatstole in vectorsbut not the teststole in tablesso you can see the syntaxin the promcal isvery different from what we usein the secaland the second C stands forconfusingcause the matrixa promcal isconsist of thefunctions and the matrix namesbut the matrix namecan sometimes bevery confusingthis is because the matrixstole in the promisilsis correctedby different agentsthat provided bydifferent companieslike the skywalkingof open time matrixand of course armsand databasethe matches namecan bedifferentand sometimesthey are very confusingand the third C standsfor comelycause promcal islanguage thatvery common usecause not onlythe developmentsand the SIScan use promcalbut also the leadersand the PDsbecause we can getthe SISLAs, SLOsand incomesall comesPVs, UVsby using promcalsothat's why we needa natural languageto promcal tableokaynow is the role we have takenI'm going to tell yousome technology hereso what is the first thingto do?we are going to builda natural languageto promcal tablemaybe someone will saymaybe we need tobuy some GPUsor maybe we need tocorrect some materialslike a natural languageto promcal Q&Asbut they are importantbut they are notthe first thingwe need to dothe first thingwe need to dois to testwhether thecharGDPis good enoughin this scenarioif the answer isyeswe don't needto do anythingall we needto do isjust to weighthe Tongyi Qianwenand we canuse the APIthey providelucklywe have decentexperimentsand it turns outthatcharGDPcannot handlethis textand we cansee an example hereI askcharGDPtoand check methe top 10 applicationswith thehigh-gizarrange response sumand itprovide me onebut this oneis notthe one I needcause thematrix name hereis differentwith what we usein our systemit doesn't workand it iswronguser intentionrecognizationbecause thearrange response sumis thearrangeper requestnot thearrangeper minuteit doesn'tmay any thingsat least in theapm seasonoksothe lmthat forgeneral purposehas someknowledgeimpromptial syntaxcause thegrammar hereis correctbut it is likeof aknowledgeabout the arm seasonour seasonand he has no ideaabout thematrix nameand user's intentionit seems likethe lmneeds moreknowledgeand we needto put theknowledgeinto the lmwe have twonow wethe second stepfor usis tomake a decisionfor anyonewho wants tobuild anlm-basedserviceinthe firstthe second stepis tomake a decisionwhetheryou aregoing tobuild afight trainingprojectorpromptengineeringpromptengineeringoneherethefight trainingmealsyou aregoing tobuild yourown lmwith enoughcompersor we cansaya languagematerialson the other handin thepromptengineeringmeans thatyou aregoing touseanexistinglmfor examplewe canusechar GDPor wecanuse綜藝千文withoutanymodifyinganyparametersbut insteadjustprovidesomepromptsowhat isprompt?promptistheadditionalknowledgethataccombraceyourquestionwhenit isbeinginputtedinto anlmwe cansee anexamble hereby yourusermaybewe cansayanuserisaskingcouldyoupleasegivemeapromeqlandIwanttoseetheresponsesomeofeachofmyserviceandtheknowledgeistheistheinformationweyouprovidefromyoursystemImeansthecontactsingreenandcontactsinyellowandororboth of the knowledge in the and the query will be input to anlmlikechartgdpandthelmwillgiveyouanbetteranswercauseithasmoreknowledgeaboutyourseasonandyourintentionkaywealsomayadecisiontreeforthebeginnersinlmbeforwhointerestinginthelmbaseservicesothe firstquestionyou needtoask yourself is that are you an experienced nelp here if you don't know what is a nelp here just just choose theprom engineering one but if your answer is yes the second question for you is do you have enough GPUs I mean like dozens if you don't have that much GPUs fantastic you can try the you can use theFight Training Project maybe you can build your own charger dp in your film you can build a companybut your answer if your answer is no we recommend the Prom Engineering and don't be sad cause ithave been shown many times Prom Engineering can achieve the performance just as good as theFight Training one in many films and let's turn to another branch if you are not anexperienced nelp here the second question for you is do you have some good knowledge in somefields like if do you have a good knowledge inquantitive or observity if your answer is yesthen the Prom Engineering is the best path for you ok and if you don't have any goodknowledge in any fields or just found someone to help you is that for us for our teambecause we don't have some experience in our period neither do we have enough GPUs so wetry the Prom Engineering one so what kind of Prom works this slice is the most important oneat least for me I wish I can I can see in like several months before it will save me a lot oftime and effort and of course money from my team is very important ok our first try is towe use here the prompt is the information information about natural language to Prom cloud so we in the first step we use the documents about Prom cloud from the offshorepromisio's website and it turns out the accuracy rate is behind then 5% is a disaster wemade an analysis and then it turns out the matrix name are different from those we use in ourseason because we need the matrix name in the in the Prom cloud and secondly the documents aretoo long and the LM just cannot get a point about how to write a correct from cloud and thesecond second try we did is the we correct the QAs about promisio's from a communityplatform called StackOverflow and it turns out the performance is a little bit increased but it'sdo very well cause the similarity the matrix are different from those use in ourseason secondly many of the answers are incorrect and thirdly son of function dimension isoutdate and each has been invalid now so after these experiments we see thatwe need to provide some information about our matrix then and we have the third trialok we use the QAs correct from our users and we ignore the reasoning steps and thepromco has a very but it turns out it doesn't work cause the promco has a compactsyntax and the answer list of reasoning steps are insufficient for the LM and so we needsome reasoning steps cause we need to adjust the compactsyntax so we use the QAs from ourusersplus the explanation of promco that generated by CharGDP and it turns out theaccuracy right here is like 20 20% maybe and explanation but it's not good enoughthe explanation are not always correct because it's generated by AI but not humanso it doesn't work on and such prompts are sufficient and insufficient for the LM thatgenerate accurate promco after a very long journey we found a kind of prompt thatreally work is the the trade of song prompting which is proposed by Google Imean the Google Bray Lab if I surreglar and that time the accuracy increase from the 20% to 70%at that time we use an open source LM and then later we use the Q1 I mean the oneprovided by Tongyi Qianwen and then we get another 10% increased ok so what istrial song trial song is the kind of prompting engineering technology thatGoogle use to improve the performance of the HRGDP to deal with the logical task likethe mathematical task we did in our primary school is quite interesting here we cansee an example and we can say the trail song prompt is the knowledge yougive to the LM and the trail song prompt is the knowledge with reasoning steps wecan see an example here in the standard prompting the question raised by theuser is the is a very simple logical or mathematical task like theCoffee Tianan have 23 apples if they use 20 to main range and both six morehow many apples do they have and Q&A with similar is which is a similar questions likethe one raised by your user all of this will be pull into LM but thecharged B cannot give as the right answer and because the answer for the promptthe prompt is a mathematical about mathematical test about the Roger'sit just say the answer is 11 without explaining why the answer is 11 but inthe trail song prompting in the answer we not only provide that the answer is 11but we show that how I can get 11 here the contest in blue is thecom is the knowledge with reasoning steps at that time the Charged DP cancan get the right answer you can chart this this example in your Charged DPit really works so okay if you are familiar with prompt you can get the ideabecause writing a prompt is very similar to what we did in our primary schoolis just like a mathematical task we can see an example here is the trailof song prompt in the natural language to prompt the question here iswrite a prompt and show me the top 10 applications with the highest averageresponse time in the past five minutes the first step you need to get the average response time the first step for you is to concure the total latencyof each application in the past five minutes with the following prompt issome by service and some over time HGTV request five minutes and thenyou need to concure how many requests or how many costs in the past fiveminutes and you need to use this this prompt callor what we change is that the the metrics then we use the arms HGTVrequest count but not seconds we then we get the second prompt callfor the third one the third the prompt call we get in the third part isis to divide the prompt call we use in the firstfirst step by the one we use in the second stepif you are familiar with prompt call you can get this andnow we can get the average response time for every service at that timewith the prompt call in the third steps but what the user asks is to showme the top 10 applications with the highest response time sowe need another topic function here then we can get the finalok let's turn to the architecture of our chatbotwe have both off-line system and on-line systemin our off-line system we have many natural language to prompt call Q&Aexamples and of course in the choice of style just what i haveshow you in the last last slice and all of these Q&A will beput into a test sphere here and these documents willbe cut into several Q&As and then all of these Q&As willbe chun into the vector that consists of numbersnumber yeah it's called embedding after the embedding we getmany vectors that consist of numbers and all of thesevectors will be stored in the database here we gotwe got the off-line system now we turn to the on-line systemhere when a user is asked show me the top 10 applications with thehighest response time similarity the test thiswords will be chun into the newneuranglument vectors consist ofvectors consist of numbers and then we can get the user input vectorand then the next step is to search the top k vectors from the databaseand with the highest similarity it's very easy to to know thatand now we have k plus one vectors and all of these vectors consist ofnumber will beconverts into the test and then we can getuse the question raised by our userand and the k Q&As that's similar to the scenario and all of theseinformation will be put into the lm then we can get the finalpromechall we want okay i'm going to show you a demo you can see thetreadbook here it's the need to put thisyou can see oh it doesn't work it's okay we can see thetreadbook here is provided by arms create it and create thebottle calledpromechall and you can see the scenario we havesupported and you can just ask it an answer aboutpromechall it's like write apromechall andi want the the top 10 applications with thehighest response time and the lm is thinkingthen you can get thepromechall and you can get the reasoning stepsand we will turn we will putpromechall into our grofana serviceit's grofana but it we cannot see the whole service and you can see thematrix there and it looks like please answer right a little bitand i will go you i will show a random service random serviceand i will write apromechall and show me the response time ofapplication like bra bra bra and just wait for the answerhere is the answer provided by the lm and we can put it in our grofana servicerun query and it is no data because we don't really have a servicecall a file or adjust it randomlyremove this and you can see the application of each service in armswe can also raise the question by in english just saywrite apromechall and show me theact the arrow count of my servicethen we get thepromechall here and put it in our grofana servicecreate run query and no data because we don't really have aservicecall this remove it and you can gather rise and we you can see theservice we have the scenario we have cover and we also have some examplesabout thepromechall it's a demo and you can turn to anotherslice okay so where are we now currently we have cover 14 scenariosincluding the response time error rate qps andhttps.com and the accuracy there is like about40 about 76.69% and also for thescenario we didn't cover or the wrong case we can also provide maybe the finalpromechall is not correct but we can provide veryhelpful information write the correct matrix name and the proper syntaxokay the most important thing is because we use theprome the prompt engineering one but not the fight training sothe it is very easy for us to cover a new scenario the only thing we havewhat we have to do is to add some like five examples about the natural languageto prompt example here okay we also made some comparison amongour query system and the chart gdp we check that chart pv without any promptand it turns out thepromechall it provides is wrongalthough the grammar or the syntax is correct but the matrix nameis not because they are they have no idea what we use in our systemand the intention recognition is wrong becauseit is we I am asking the arranged response time and it gave me thearrange per minutes it doesn't make any sense in our scenarioand you can see the arms query assistant I use the Q1Tuber providedby Tongyi Qianwen also in iBaba cloud with three four to five promptsand thepromechall he the the query assistantshow me is correct we can see the correct syntax correctmatch name and correct intent user intention recognitionnow we turn to the row aheadnatural language to see natural language to see co-language is a veryemerging topics in the BG field and also in thedatabase field and something elseand the reading companies like googleand the Datadoc, Dynatrace, and the Neuralic have releasedtheir natural language to see co-language and thegoogle also provide a service that can translate fromnatural language to prompt crowd but even but they are just invitingtheir user to test it out but it has it cannot be assessed by the publicnow and even google cannotguarantee the 100% accurate rateatwith the chargeGDP and if we have a very wrong way to gothe first my store should be the natural language to chartto chart a to chart service here we can get the we can get the trust means that the the program crowd or thecicle language provided by AI is 100% correct then we can get thecharge but it has and the topic at that timeshould be chart with me and get the charge you wanthere is the first my store and for the second my store is thechappals for morning it's just like experience engineerit can give me the topic should be chart with me and get alertand a fixed suggestion you want but we still need a humanbeing to make the decision whether I will change the suggestionI need to someone to to confirm these things and for the firstfor the first my store is the chartoops at that time the topicshould be chart with me and I will take care of your system and all ofyour applications it's just like a human being it's like achallenged and experienced and of course hardworkingengineer just like your courage at that time it's the realchappals okay oh thank you so much for yourtime and your attention we have discussed a lot today and wehave own I have only two message that I really want toshare with you the first one is that the trail of songreally works in the natural language to promote our traveland the second one is that the Q&A expands examples withstep-by-step program crowd generation are effective in ourscenario thank you so much for your time and enjoy yournatural day holiday if you don't have a holiday just have anice day thank you so much or you can ask me inenglish or chinese英文可能比较差然后刚才有些地方可能听得不是很清楚然后我想问一下就是这个和统一签问是有什么关系吗就是我们是基于统一签问去做的吗对是的我们就是我们给那个大模型提供一些prom 就是一些提示词然后我们最后会调统一签问的接口由他会给到我们这个答案ok 然后上面那个76%这个是怎么测出来的啊这个是准确力的是我们这边是有有51个case 然后我会按照就会给他们打分如果他完全对的话就完全是我问的那个意思的话也有我直接能运行这样我就给他一份如果是他稍微错了一点点就比如说有个上拜他加了一个下滑线这种就给他扣一点分然后这么整个起来之后就有一些评分机制有了一个有了51个case然后就给他算到大概这么一个准确率这个测试几率有没有可能再放大一点是可以的我们也刚好有这个打算其实这块就是最理想的是有一些公开的标准的数据级嘛但是因为做这个自然语言到plumcloud的人其实很小据我们所知就是我们阿里云做了然后google做了别的都是做一些他们自己的查询就像做ccode就非常多所以这个我们也有打算把它扩大一点但是需要一点时间因为这可能有点小我想问一下那个普罗我因为有很多版本嘛就是可能在一个公司里面也有可能有很多版本并存的那如果是它ql有区别的话你这边就同意签文能够自动识别出来吗还是需要自己再输入一些别的什么信息这一块有两方面吧就是我们这个其实这个plumcloud跟你那个普罗米是普罗米就是自己的版本其实关系没有那么大因为它发布新版本它可能只是加了一点点的这个算子然后你那些老的算子像这种什么topk somebody还有some over time其实这种是一个非常非常经典的它们不怎么会动的所以您说的这个问题可能对我们这个性能影响不是很大就算如果说您这个是真的影响到了一些算子影响那它使用了这也没有关系我们这有提到一个是因为我们用的这种是plum engineer就提示词工程这一块的话你只要给到它一些相应的例子它就能get到你的那个点就是你的提示词包括了比如说普罗米就是新版本的新的盘述我给它例子它就能放回来给我你们就是在那个普罗的基础盘述上面然后再进行组装了是吧对对这种就是我们写的plumcloud都是标准的plumcloud只是它的那个matrix name是因为是我们自己的指标是alms的指标然后我们给它拼出来的谢谢因为我想得比较好奇的是如果普罗它因为它是在不断升级升级的话它有些语言或者说更简洁或者说它就会再给你包一层的话你这边能够自动去做这个识别吗还是说还需要再训练应该是不能自动做识别的但是因为它这个就是从算值这个角度它其实更新了没有那么快的因为它版本更新它基础算值一般来说会变得少一点对那现在这个语言就是因为普罗它有采集像容器层面包括数据层面这种它这些语言都能够兼容吗可以啊只要你给我例子我就能写好的谢谢啊我自己也在做一些Expression生成方面的一些实验吧然后我看到你们有用GPT3.5 Turbo来做这个PromQ的生成然后你们有测试过GPT3.5和GPT4在这个生成效率或者证确性上的一些区别吗因为就我自己的经验来看就是其实GPT4的这个生成的证确性上面会远远高于3.5然后不知道你们在这方面有没有什么关于3.5的一些调优或者说是有一些PromQ上面做一些特别的一些工作好的非常感谢我重复一下这个问题因为这个规矩是要先重复问题我刚忘了就是您说在这个ChartGP3.5和ChartGP4.0就是在这个NaturalMV2.0的这个性能上嘛首先我们调的是同一千万我们调的不是GPT3.5然后其实这一块虽然说同一千万GPT3.5和GPT4是一种非常非常好的模型但是我们这里也有分析了它虽然很聪明但是它其实可能是因为数据比较少就是它是不可能知道就是我们一个系统里面的那些指标的名的这个是因为它就没训练进去嘛这个是一个点所以我觉得即使你模型再调优了我们还是需要一些额外的关于我们自己的信息给到进去的然后还有一些意图识别这些都是要自己的信息但是如果说那个模型它自己本身比较聪明的话它可能就是那种泛化能力比较强就我可能给它一个容器的我给它一两个例子它就能很快get到别的例子但是我们因为我们是埃利云我们只能用同一千万所以你们在你们就是用同一千万有取得比较不错的效果是吗对挺好的就是我们的Case当中就70多到80好 我没有下问题谢谢您刚才有提到那个限量数据库然后是有用像那个一些开源项目嘛就是说能够把限量数据库和那个联合起来用的这种项目吗这个我们一开始做实验的时候确实是有用到一些开源的限量数据库的就是存我们那些vectors嘛但是后续因为我们下次要设阶段等我们真的商业化之后我们可能会换阿里云自己的限量数据库因为它现在已经released的就在前不久有一个这个东西就是有没有像用到一些什么ChadChad这样的一个ChadChadGLM这样的项目去和限量数据库去对接呢就是就是那个ChadGLM我们之前就一开始探索的时候因为我们探索得比较早当时那个同一千万还没有面向社会嘛当时我们确实是用过一些的然后发现它的性能可能还是比就是我们后来又换了那个同一千万又发现同一千万它可能确实是效果比较好而且它参数比较多我们就给它全都换掉了现在我们那个机器人的背后就是同一千万OK谢谢我问一下一个是就是在这个Inventing那块我不知道在这个做experiment的时候有没有就是比如说选择的那个model有没有做一些这种取舍或者什么其实是有的我们做过一些尝试但是这块其实因为我是跟我们组的另一个同学一起负责这个LM应用其实我自己对这个Inventing我只是选了一个可用的我们有特别的去调优它那我发现可能可能是因为我们这个Inventing它可能会对你去匹配那个知识的会有非常大的影响嘛但是因为我们那个Prompter把它写上那个Trail Song的时候它都很长就它怎么它都能配到就是跟它最合适的就是我们就选了一个可用的之后我们就能达到70%到80%的效果但这一块也是我们后续继续调优的一个方向谢谢我还有一个问题就是在做那个PrompterEngineer的时候有没有遇到过一些比如说因为你要准备一些example嘛对然后这个example的这种代表性或者是它的量不够或者是就是对那个效果会产生影响嘛我不知道这个实际的试验的时候有没有遇到过有但是其实在我们这一块的话我们就是因为也可以看到我们下覆盖的场景也就十四个嘛也不是很多然后其实每一个场景你给到就你匹配到的三到五个就够了这个Trail Song其实还是非常地work它在它的原文里面它解决的是那种小学应用题嘛就是那个Coveterian的那个它也是三到五就可以有一个非常好的效果了所以跟那个Use Case还是有关系的是吧因为这个特定的ProngQ的这个程度对但是我们的关键它其实还是匹配到那个用户想要的算子和它想要的那个Match跟MT其实你这两个给到了它基本上就用它自己大模型的能力它就能给到你一个很好的回答了这是我们的经验很好的谢谢谢谢我觉得最痛苦的这部分就是这个图就是你要找到一个合适的ProngQ这个就是因为你可以看到第一个观点直接从百分之十几给我升到了百分之七十几它其实那个Prong Engineering本身虽然说听起来给提示词这件事情很简单但是真正去做的时候发现它就是整个项目中最关键的点就是那个那个合适的合适形式的ProngQ它是最关键最难的我们花了很多的时间在这一块那你说你是ProngQ的条约对吧反而是对这个我不知道这个这个阿里的大模型有配合咱们这块Arms这个有没有做一些对应的优化没有就是相拥完全没有是吧对就是相拥的那个Q1 Tube就是相拥的直接能调的那种我这边其实有些这个经验我想跟你分享一下但我不知道这个你又没有这样的对应感受就是其实做这块工作如果你找到一个很好的模型的话会让你的ProngQ能四倍公办但是如果你底层的大模型如果很拿夸那你会花大量的这个经历去写ProngQ工程这个会整个过程会很痛苦我不知道你怎么看看这个事谢谢这个问题其实我们也有遇到也不如就我们也试过就是我们找到了就是那第一个拐点它拐到百分之十几到百分之七十其实就是你找到了那个COT你就能到达然后那一块我们想要从百分之七再往上升的时候我们确实是做了很多的努力就我去调我那个ProngQ怎么那么低又发现我们的那个性能它就卡在大模型那儿那就算了以后我们这个项目就停滞了得有一个多月以后我去干别的活了以后回来我听说那个同意签问是9月13号可以公开使用了我换了一下还真的有用有有给我涨了百分之十确实是这样的谢谢谢谢所以您这个项目本身没有对这个同意签问做任何的反听是吧没有完全就是PE之后再加一些RAG到你的下两个去扣对对 是这样的谢谢谢谢那我们有请下一位演讲者谢谢大家


Welcome to the homelab show episode 25 version control with get and I'm gonna try to make a lot of puns in this because some people may not get it some people get it like Jay and Get off my lawn. Yeah, if we can just do play on word with this I'm going to explain all day. I gotta get a few of them out as soon as we start here But this is an important topic because get is well when people ask I hate Tom How'd you get your prompt like that? Well here just get cloned and I have a little installed it installs the The dot files so you can have this in Linux and things like that It's an easy way for us to and Jay has a github, but don't conflate believe it will clear us up right away Get hub uses get github is not get they're not interchangeable. Get hub is a service owned by The evil Empire that is Microsoft. Sorry. I have to call him that Yeah, I'm glad you pointed that out. That's a common misconception. Yeah, so there's I really will clear that up right away It is a great place. I myself completely do use get I think Github is not a bad place necessary to host it But beware that is owned by Microsoft and get is a process get hub is just a place to put things because there's also get lab But Microsoft didn't buy them in an honest popular Yeah, and I'll talk about a little bit about get lab I'm not an expert, but I will talk a little bit about that and another solution that you didn't mention that Is not the first thing that comes to mind that I think it is worth mentioning And I might even do a video on it if enough people want me to but we'll get to that. Yeah, we'll get to that See, yeah, we'll get to that Before we get to that we will talk about the sponsor of this show and that's the node And you know what that might be a fun idea you could probably run your own get system in Linode Yeah, you could get your own virtual server and run it there. Yeah And you know like you won't turn this podcast off before Not yeah, it's getting a little dry now, but honestly, you know getting it back to Non-get related top actually we should keep it to get related topics because like I said you can run your get server there but the node itself is the Sponsor of this episode like most of the other ones so far which we're really happy to have them on board They host the podcast for us. So you are using you're actually using Linode if you go to the website for this channel download the podcast Yes, and it's a it's a fantastic service all of the web presence for learn Linux TV runs on that as well and Couldn't be happier with it. Yes. So we've been Linode users for a long time and So we like to think them as a sponsor is an offer code down below so you can get in on it, too So Linode's been pretty awesome. All right back to the topic at hand Yeah version control So let's so I figured for this we could kind of You know, well, we'll just kind of walk our way up through the the topics and just kind of start small and you know Easy and then work our way up. Um, this isn't going to be a tutorial. This is a podcast But I am going to be mentioning a few things about get and you know be the command line as part of that But first of all get is part of version control and version control is where you want to control versions essentially You want to be able to keep track of changes and it's often a thing that's used for software developers And in fact, that's where the primary use for version control is and this isn't a software development podcast So why are we talking about that? Well, because version control people have realized is a concept that Goes beyond just software development and you can use it in ways that may not actually be apparent at first to most if you're thinking about becoming a software engineer you you pretty much learn version control and I remember when I was taking college classes before I graduated I was really upset that there wasn't any classes on version control Even when my major used to be at one time So for software engineering, I'm thinking this is a big deal, but when it comes to home lab and Business you could keep you could keep track of different versions of things other than you know You're C++ programs or whatever it is you're writing and you could keep track of your config files Your server config files your dot files and I also feel that for a lot of people version control is a precursor to You know getting started with automation and that's kind of how it was for me like when I first started with Linux I discovered bash scripting one of the first things and I remembered that there's all these commands any time I set up a distribution that I have to run every time So if I wipe it out reloaded have to run these and I would just You know just paste these commands into a text file So if I ever wanted to set up another distro I would just copy and paste the commands into a terminal to set it up But then when I discovered bash scripting it's like oh, I could just make this a bash script I have all the commands here So I'll just make it executable put the bin bash header at the top of it and just be able to run it I could just copy that file to the machine. So this is before I got into automation This was kind of like a form of automation It starts like this for most people and then it's like well, where do you put it? Well, I'll put it in version control. So that way I have a place to download it from So get is just is one of many different types. I mean there's Subversion or SVN for short for example Mercurial a number of other ones But get has just become the most popular. So that's what we're going to be talking about. Yeah, and SVN I believe was like Before get SVM was kind of like the de facto with the majority of people used it was But not it just didn't quite work quite as well as get does Yeah, I think it has a lot of Things that makes it more popular that I've read but full disclaimer. I pretty much started with get I did Briefly use SVN for a few months, but not long enough to where I could really just give you like a point-by-point comparison to So why is get important in this space? So if you think about Servers you think about the fact that things change over time So you have a let's just say you have an Apache config file that has your You know server controls in there and then you you know change it up or maybe you make a template or something Where do you store that so other people can get to it and also if you have it under version control? Which we'll talk about later if the server is not acting right, okay What changed but with get you can actually go back and find out like okay? Is this config file difference since the last time it was committed now taking a step all the way back What's required for get you mentioned earlier and I'm glad you did that Get and get hub are not one in the same get hub is like a web wrapper around get you could use get on The command line you don't need a GUI for it. In fact and a lot of people may not realize this You don't even need a server. So let's just start at that level Let's just say you have a Linux laptop or a Linux server You have no it's not a server in the sense that it's not it's not a get server It's just maybe your web server your Plex server something local that isn't accessible from the outside So if you install get which would be just apt install GIT get or dnf install whatever your flavor is then you could use get right then and there and the code never has to leave Your system it could stay there on the system and never touch the internet never be uploaded anywhere So if you for example just creating new Repository then you have a folder and anything you put in that folder you can add it to version control Which means you make it care about it get is going to pay attention to it Because you put a file in a folder does it mean that get is all of a sudden going to be oh I'm going to keep track of that now. No, it's it'll basically be a foreign object But you Get add that particular file and that tells get you need to keep track of this file at this point Nothing has left your computer your server yet. It's just there on your local file system now Why would that be important so? You can also initialize a an existing directory So say for example, you have your a pat your Etsy Apache 2 or Etsy HTTBD folder for your web server So you could just get in it inside that folder and now that folder Has a dot get folder inside of it and now you can actually Manage the changes in there and add your Apache config files to version control at this point Nothing has left your server yet. It's still there. It's not online. It's not accessible But what this allows you to do is if like something changes or something's not acting, right? You can run a get status and it'll call out anything that has changed since the previous commit You commit every time you make changes. This means like I want this is a final change I want you to keep track of this and that's a great thing to do because if you have other people in your house Maybe you and a friend or I don't know family member also get into the server Something doesn't work. You could say hey, what are you doing over here? You don't you totally deleted this line right here and you know that because it's you know It's under version control and kid is taking care of that and watching that for you Well, there's also when you run updates Occasionally, I mean granted the update does ask generally speaking The update itself can make changes to a config file because sometimes when they update a new version and then get can Allow you to see the differential changes between there so you can it's telling you but then you know We're next in yes things sometimes through the updates and you're like, oh, yeah I yes about three different changes now I should probably look at a differential between what it looks like now in my last commit And it's you know, just really is that version control way of tracking to see what's different It's also really handy when you're iterating through configurations to Figure out what you did each step of the way and being able to look at different timelines or even re-roll back to that particular one When I was configuring you know bring up media wiki because it can be tedious to configure I was not smart I did not use get and sometimes I'm like, oh I by fixing something over here something broke But I remember what it is that I did because now this function is broke to get this function to work and I if not having a good differential made that hard absolutely and It's super easy to just install get on your home lab server Go into a folder that has a config file as you care about and just initialize a Repository there again It doesn't have to leave your computer if you're concerned about privacy or something like that Especially considering some things and this is important. We'll get to talk more about this something should never be in version control It's I mean that that's something we really need to dial down here because there's some things And I'm going to keep pushing this and mentioning this over and over again until people are tired of hearing about it Be very careful what you put in there because it's hard if it does reach the internet You do upload it to a server a get server then it's out. It's out there So anyway, you could control your servers with it and if you have a home lab server There's probably no reason not to initialize a repository inside the directories that contain the config files that are important to you Now another thing that people do is they take they want to keep track of their dot files They're Vim RC their bash RC their Z shell config files Tmux config files all these different things and I think that's how a lot of people get started with version control because You know sure you could just grab those files from your home directory Put them in a zip file or a tar file and just you know manually copy it over and extract it You could do that but I think it's it's pretty cool to keep track of your of your dot files And there's also a I haven't used it myself But there's a tool called stow stow that a lot of other people really like for this purpose So it could keep track of your dot files it in I don't know if it works this way But I know when I used to use get for this purpose I would have a dot dot files directory that's hidden and inside there be all my config files in one folder And then I would have like a knit dot sh or something where you just run this can this bash script into just sim links You know dot bash RC to dot dot file slash bash RC or wherever it is So just put sim links where the files are supposed to be so your shell can find them But they're in this one folder and I think stow might do something similar to automate this I'm not exactly sure again. I haven't used it I just know like I wanted to give it a mention because a lot of people love it so I do it with the sim link method that you mentioned that's how I started with mine get because the Dot files is something you know I show them a lot in my Linux tutorial videos and things like that and people like How'd you get the command line customized like that and I have my github because it's one of the easiest places to throw them for public Accessibility and it's also how whenever I set up new servers It's the same thing I like to put in there and using a version control from my main computer Means if I change something in T-Mux or I change a feature in Vim RC or bash RC to the way I like it any subsequent servers deployed later or I can just hit get pull on all the other ones and have them Do that and to reiterate what Jay said Please note one of the good reasons for doing it in a folder in a sim link as opposed to just your home folder is you don't not Watch your SSH private keys over on github. That is bad. That is something that happens a lot And there was a time we're in github for API keys that people accidentally uploaded and especially they work for a company That's especially bad like the AWS keys like oh my gosh You could think about that like if you if you work with AWS or any of the other VPS or cloud providers and you have your keys your admin keys that allow you to launch machines and remove infrastructure That if that goes up into a server like github or an online resource. It's a bad thing I I say get used to not including those things even if you have no intention ever of the you know get Repository ever leaving your computer. Maybe you don't want to host it online at least make sure you don't include files in there And how do you do that? How do you ignore a file? You have it Let's just say you have a file in there You want all of the files in version control, but you don't want this one though because that has like some maybe an API key in there You don't want that so what you could do is you could create a dot get ignore file And you put the file name in there that you want it to ignore and it's not going to It's just not going to keep track of that now if you've already added it on accident you have to remove it So if you've added it to version control Get ignore is not going to work the way you think it is it's not going to delete it You know on the version control if you have already entered it in there Just create a dot get ignore file and make sure that the files you that are sensitive are not Going to be uploaded by putting them in that file and you commit the dot get ignore file itself to make it take Effect and at that point get is like oh you've changed that file I don't care because like I'm not even watching that or that's a new file But I don't care about it and you get in the habit before you even go up to a server. That's very important. So Now we get into the topic of a server Get hub is one you mentioned get lab as well. Yep, but what's required to make a server and it's actually extremely simple You can have a remote get server by simply installing the get package on that remote server So say for example, it's a Linode instance, right? You you don't have to have a GUI you don't have to have a web browser attached to it a patchy none of that If you have just SSH to that server and get on the other side, you can actually push changes to that server You don't actually need get hub You don't need get lab if all you're trying to do is have your your code on a different server SSH done you can actually use SSH to push and pull from a get repository So then you have that Folder that you want to you know keep track of you have your dot get ignore in there So it's not keep you track of things You don't want to it's time to put it up on the internet So or a server that you control and you do that with SSH and that works Another thing you can do is if you think about like Tom's videos with zero tier You could set up a Linode server that is not publicly accessible That is external, which is great But you could make it so that the firewall only allows the IP for zero tier So it's not like anyone else can get to it So even though it's a cloud provider, you can still have a remote server That's yours and only you can access it. So that might be an option for some of you out there Get hub is another one of these it's the most famous you can you have your local repository You could push it right up to get hub you could push it up to get lab You could push it to all of them if you want. I mean, it doesn't matter Because that's the the get server isn't required the get server is just a place to store Your version control files and that's the important distinction Yeah, and get hub is one of the what made them popular is they did a good job of creating a collaborative community And a lot of a lot of big open source projects jumped on that And if you want to work with lots of people and you want to tie in a way for people to make pull requests I made a way for people to make Easily look at the public code and make comments on it So you can have some feedback from the public publicly posted on an open source project They did a nice job of putting that all together and it's what made them so popular along with just Everything was kind of well done when they assembled it. Get labs a good runner up for that But you'll I still see as many people as we're going to exit from get hub so far Even though microsoft bought a few years ago. I'll admit they haven't done anything Horrible to it right and in fact they added a couple features one of the features they've added is it looks for bucket keys and stuff like that It looks surprising You know, maybe the next few years i'll be saying something different for now It's nice and nice things when you're dealing with all your public code It's not like it's hard to copy all the code do a quick get clone pull something that you're looking for on there and One segue a little bit about that is this can be a problem One of the reasons if I find any type of project I like a github I always make a clone of it because sometimes package maintainers are Flighty and they just disappear code and I ran into something that was just missing the other day I'm like, huh I'm glad I have a copy of that because they have Plainly just deleted it off github because I don't know why uh, they're not in contact anymore They seem to have deleted their count Or sometimes even worse it could be something like youtube dl that got pulled down Yeah, yeah, and that's another example that wouldn't right there was a conflict That was resolved later about them pulling youtube download They always have a tenuous relationship with people who post security research on github They want to make sure that before security researchers post proof of concepts This is microsoft stands on it that there's been patches for it But sometimes there's even been a patch for it and the security researchers have found themselves kind of stuck in band from Uh github temporarily from posting some of those things That's just a little bit of it. So if you find something like on github and you have the space to store it add it to your own It's not bad if it's an important tool that you use all the time to have your own local copy that you keep up to date Yeah, absolutely. That's that's a great point and that's easy to automate Yeah, it really is and I think that uh get is one of those things that I recommend that literally everybody learn it And there's a few things I could say that about because most of these things It's very context sensitive like if if you if you don't have a use case for something What's the point in using it? But get is very important for I think everyone because even with homelab You're going to find code on github a script Maybe that does something you want to do and you're going to look at the script and Download it and use it. Maybe you might notice a problem with it And then you just say I'll just submit a poll request to you know fix this typo or something that I found in the script To kind of give back But one thing that I think the easiest way to learn it in my opinion for a lot of people is Especially when you're new to to all of this You're writing down notes probably when you learn something you watch your videos You watch you know watch my videos and then you're writing down notes now You have if you're like me I write notes and text files And then it becomes very easy to upload the text files as long as you don't include passwords or anything in there That's sensitive You know other people can benefit from that So if you just went through the vim tutorials and now you have all these notes about using vim You upload it. Maybe someone else might see that and they might oh, that's cool A little vim cheat sheet this person made while watching a video. That's pretty cool But as you create notes as you're learning all these concepts and pushing the notes up to Github and then maybe pulling the notes down on a different computer because you want to you know You can't remember the said syntax or something, but you wrote it down. You can just get clone it That's a really great way to learn version control Um, especially considering there's no systems hanging in the balance like you know bad commit isn't going to bring systems down It's just your notes and that's a great way to get into the workflow. I think um You know someone has an interesting question that I I think because gits been around for 15 years I remember people really hated Uh svm like it was a lot more clunky and harder to use compared to git But because git's been uh in use for such a long time It's kind of become Back to what we said earlier what it's become a standard. Also if anyone didn't know You might have heard of the guy that created git, you know his line is torvals It was a little project he had besides this other little project he has called linux He came up with that and it's It kind of became once linux and some of the big names started using it and from my understanding I'm not a developer full-time the development community says life was much worse prior to git Like it was a lot more difficult to manage larger scale projects. So it is um done that matter of fact Even microsoft's using if I'm not mistaken using git still internally now for a lot of their larger projects Which has probably led to some of their acquisition to get out there's it's been It's proven to be very scalable for a large project. So it kind of it solves a lot of problems in between Yeah, it does and um, I I don't remember much about svm. Unfortunately. I worked at a company That um a long time ago. They were using that as their primary version control But they're in the process of switching to git and they they like to get a lot better But they they started with svm. They've been using it for a very long time So it wasn't an easy thing for them. They had a lot of different build systems that were using svm Yeah, so they were they were making good progress and switching over to it. Um, and they They used svm. They just They didn't really complain a whole lot, but I could tell that they just felt like it is easier I mean, why else are they gonna, you know, move to it that it was a better solution for them there were a lot of situations where um, somehow some protection wasn't in place where It was allowed. You you were allowed to basically commit to the main repository But that wasn't what you're supposed to do.  They were it was a day long ordeal for them, unfortunately I could tell why they might want to switch to git. Yeah Linus created it because he needed to solve a problem. So he's like, okay I build the linux kernel. I got problems and it isn't I need to solve this problem I need a better way to build it So he took time off wrote git and went back to Using it for the linux kernel. So Yeah, absolutely. So I see a lot of questions in the live chat or statements about git lab versus github and vice versa. So Which one's better for the other? I think they're both great. I use git lab primarily But I also have a github repository for the youtube channel because that's you know, where all the cool kids are anyway Yeah, git lab kind of seems in my opinion to target the enterprise more Um, get it's not that github doesn't They do it's just they're more in my opinion a general purpose solution Whereas git lab is more targeted towards the enterprise. But however Um, home lab people can use git lab. You can install it on your own server Which is one thing I like about git lab. You could use their service And you know, they host for you or you could just host it yourself Yeah, and then you can't hold as far as I know you can't host your own github. No, that's the benefit and they have CI cd continuous integration continuous development. I believe it stands where I've been using that acronym for so long. I forgot the meaning or what it stands where I'm pretty sure that's right and They have that built in I think github does now as well But there's all these tools in git lab that I think are really cool. I recommend just checking it out You could just sign up for a free account there. They're not a sponsor or anything You know, just check them out see what you think of it Compared to github make your own determination which one you like best But um, you can mirror the two you can use both you could have commits from one go to the other So that way you could just have you know, I have to keep track of multiple remotes on that I like git lab a lot and I can't even remember why I chose it It's just I've been using it for so long now And it has some, you know, there's a lot of feature overlaps So it gets really hard to call one the superior of between the other It's just if your enterprise company focus git lab if you're You know general purpose developer or don't have any specific ties to the enterprise then github is probably fine But I think even if you use git lab You'll still find yourself using github because a lot of code that you'll probably want to reference is there for you To inspect and other people Especially in security if you're downloading a security scanning tool, you're probably going to go on git lab Or excuse me github to get it So you'll probably use github no matter what yeah, and it's one of the challenges of moving is in for example Even if I were to move over to git lab and move my dot files, they're not that they're that popular or not They're that special mostly a copy from cali linux. I even say that in my notes But one of the things about it is I now have all these links everywhere that are all set the poll from that If you switch where you have something and people don't switch where they pull from it unless you delete it They won't even get an error. They just think there's no more updates to that They just say oh it doesn't update anymore because there's nothing new to update So the pain of switching once again can be it's not that it's an insurmountable task But you somehow once you've been using something for a while you've built all these Scripts that implicitly linked to a specific url matter of fact one of the conveniences that You know you can list your public ssh keys over in github and once you've got a bunch of scripts that pull those ssh keys in You're like, uh, I have to get where did I put all those scripts? Because I just started setting them up everywhere to make sure my latest ssh keys are on servers Uh, I have to go find all those servers and make sure they're pulling from the new place I keep my ssh keys. So switching can be hard in general too. So migrations in general are a pain. Yeah, um, there's there's a third solution though I want to mention actually sure and it's called git t g i t e a Like the word git and t like i'm going to drink a spot of t in one word So git t with only one t And it's a self-hosted Solution for this that is really good. It's one of my favorites. I don't need again I don't know why I switched to git lab but git t was fine Maybe I just wanted to try the other one It might have been a work really the reason at the time because I think my company was getting into git lab That could have been the reason But git t is written in go you can install it on your own server So you can have it on your lan if you want So if you don't like the cloud you could just keep it local if you you could write it on a linode server Or whatever if you want it to be remotely available. That's up to you Just know if you make it make it remotely available security's on you right because you got to make sure it's secure And updated so you're taking that responsibility upon yourself But git t is a lot is really great you install it on whatever linux server you have local or not And you could just use that for where you push your code to And um, I used it for a while and I I had no complaints with it. It was great I might make a video for it if there's enough people that want me to do that It's an alternative to github and git lab that might be something that'll be right up someone's alley So it's uh, just git t.com gitea.com. You could check that out. Look at the deployment instructions How do you deploy that? Um, I don't remember the process, but I do remember it seeming like very pretty easy You're just downloading go and then the module and you're just running it essentially so It's pretty easy to do that sounds pretty simple Yeah, yeah, I thought it was too so I really like that one. Um So Where do where does this go right? So you so you have all this git thing you learn it Your your version controlling your servers or dot files Maybe you sort of get t or a git lab account or something and you have somewhere to put it I think that this organically You know most people unless you start with with um automation Maybe you're getting into home lab and you're like man public looks cool chef looks cool ansible looks cool And you learn it straight away. I think if you don't do that most people naturally kind of evolve into that from this So maybe you have some dot files that you put in git and then there you go But then later on you you start to look at your version your automation tools Let's just use ansible as an example something we covered before You keep your ansible code in there You can make it you can make the repository private even on git lab and github so no one else can see it And you could have like a deployment key that only you have to download it So you don't have to worry about like everyone downloading your config files or you just run your own server local land and um I feel like it once you put your ansible code in there It starts to kind of make sense how this would work in a company because a lot of home lab stuff It you know might if you work in it as well You can translate to that so then you could have like You kind of know what it's like to use version control So if you work at a company that's using puppet chef ansible or something You have multiple administrators that are pushing code to that repository so you could kind of get used to the workflow of peer programming essentially and I think that's a Pretty cool thing, but where it all comes together though is ansible pull And ansible pull is my personal favorite way to use ansible and just as a quick, you know refresher because we talked about it before In my case, I have laptops desktops and servers that are maintained by ansible My laptop could be in my bag I mean, which means it's it's asleep and it's not getting any network connectivity So if I have a ansible server and it tries to reach that laptop when it's suspended It's not going to it's going to send me an error email. Yes. I know I put the laptop away. I'm not using it Leave me alone But you know, of course the ansible server is just doing his thing is trying to reach a server and it can't but ansible pull is the reverse where The laptops the desktops the servers they pull down the configs from somewhere online So they're only going to pull it down when they're online or just powered on So that way, you don't worry about getting errors when it's off. It just next time it comes up It's just good. It's running via cron. It'll just download what it downloads if it's if you have that code in a version control Utility anyway or server. It's very easy for For you to basically migrate that ansible pull because essentially you're just changing your deployment script to pull from a url That url could be the repository for your get lab Server get hub get t whatever it is and then all of your servers can download from that central location So the way it started for me like, you know, I did seem sim links to dot files But eventually ansible just has these dot files and just make sure they exist on all my machines And it's all very organic the way that that kind of Played out And into current day to where I version control and automate everything I think it kind of it's a symbiotic relationship I think is the best way to put it when you're dealing with configuration and version control Well, and it's it kind of goes to the me and g we're talking last night and one of the challenges sometimes is when You don't use a laptop for a little while not just now because there's a change But maybe you didn't need it for a week and i'm looking over across my studio table here So you know what I have the same thing I have that laptop probably hasn't been on in two weeks because it's just a lab laptop that I use for some of the demos So having the ansible pull tied to all of the get versions because as I've made changes since then to different things I'm working on but when I need to fire up one of those demo things It's like pull it open it up.  I understand that more in concept j actually is using it So I'm I'm with all of you on this in the audience here learning some of this and getting better at some of the automation Because it's not my uh highest skill set right now Yeah, well, that's okay because it isn't your highest skill set until it is right? Yeah It's just it becomes I can become better and yeah, um But so so what I want to do is talk about ci cd continuous integration continuous deployment Someone corrected me and thank you by the way in the in the chat room Um, you know, like I said, I see i cd. I that's what I say, you know After a while he kind of lose track of what it what it is But um, I know what it is in theory because I use it Um, when we have the ci cd tools Just to kind of keep it really simple you you'd have something like jankins, uh team city, um I there's others Uh, I think i'm gonna there's probably another really common one I can't remember the name of but anyway the idea is it tests the code for you I'm making it very simple because it's much more than that But you commit code to it it can run the code compile it It could just you know The agents kind of do the thing with the code and verify that it is actually good And then you can use it as part of your deployment now That's not necessarily something That's going to really translate the homelab all that much But there is overlap that i'm going to mention which is vibrating enough so With ansible pull the issue became that if I commit a change Because any commit I I make to that repository is going to be run on every single machine So at some point I had like 20 30 of these that are checking it So if there's an error syntax error Then i'm going to get 20 or 30 emails from every single server complaining I it didn't work because I have this you know catches standard error and you know It's going to send an email to me that there's been a problem It gives me the error message and then I get like 20 30 emails and um, okay And I fixed it and I get 20 30 email saying that it's successful, which was just getting annoying So I I made kind of like a poor man's ci cd solution So most people will probably use jankins team study or one of the others Have a server they have an agent the agent runs the code But what I did instead is I I added another branch called staging to my ansible Repository, which is just where I test things and I have one candidate For for every single operating system. I run. So there's an arch Linux first, um, bm Debian ubuntu pop o s menjero All of those and they all pull from only the staging branch And so when I make changes I make my changes to that branch push it up there So only those servers get the change because I have a representative of every distribution So if it works on all of those I don't get any error messages. Okay, great I could commit it now to the main, um, branch and then all the other systems get it Now This isn't a true ci cd solution because there's no ci You know server here each one of them is just checking out a branch But they're reporting the success or failure to me so I can basically find out if it's working or not So that way I don't deploy something to like 20 or 30 machines and break them all And or worse lock myself out, which I've done It's a lot easier when you lock yourself out of like a small subset of staging servers Then everything and then you have to actually access a remote console You know Because you just put a empty variable in the ssh config file and now the ssh service won't start anymore which is Um, but you know, that's kind of where it goes because ci cd isn't one of those things that we normally think about in Home app, but if you have automation like ansible You might want a vm That's a representative of the distro or distros that you run that could just run a branch report success or failure So you have an idea. Okay. This is exactly what I think it is And then you could push it to main and everyone who gets it. So I think that's where um ci cd might have a possible role and Some of these tools like git lab and github they have ci cd built right in So you don't even have to do the poor man's version like I am you could literally just Create the agents right there inside that service and do it the proper way rather than the um, you know rigged way that I'm doing it So that's just a tip for some people out there Maybe only a certain subset of our audience might find that helpful But I think it's better to Break a few staging servers than it is to lock you get locked out of like your actual production servers Yeah, and a lot of this goes towards the same thinking that a lot of people that are building home labs Some of them are just hobbyists, but there are a lot of people that are going You know, this is my career and I need a place to sharpen my skills learn the skills And if you're going to go into a collaborative larger scale environment at a large company These are tools and skills you really need because in order to collaborate on this It's not just you making changes. It's not just one person It's a team and some larger scale teams really need a lot of this because you need to know who changed what when And will those changes Scale out and you know when I look at one of my friends manages over 150,000 end points At his job. So small things have large ripple effects and you know, yeah Yeah, and sometimes see it's the question of what went wrong because this seemed to work in staging and 150,000 end points. It's not working on 25,000 of them And what are those commonalities and this is you know, some of these bases you need to do if you want to get Into that type of position or those type of jobs someone in the comments mentioned that git lab has a CC ID that can be run on site So I guess they have their own tools for it and someone else says the azure has one as well Um, the azure one's slightly relevant and I won't get far into it, but look up the new, uh, omi It's called. Oh my god is the new hashtag going on twitter for, uh azure Probably not testing their builds properly and backdouring things into linux through their process of images and Based on based on how slow they're working. I don't think their dev ops tools are working very well Or at least the people that are in control them, uh, aren't deploying this very well So that was a breaking news story that happened just before we started the podcast But it still goes into the same thing because now people have to go look at, you know How do we get this out there? How do we push it? How do we get this out to all these different servers that it's in? And push the update for it So and that's where I think that's a good point because that's where this kind of comes together because if you have your version control Or you have your config management scripts and version control then whatever the fix happens to be You could add a playbook for that and push it push it into your repository and then all of your servers get the fix done That's what I do. So if there's ever a security vulnerability, I think I can't remember what it was. I think there was um There's something that happened and that's the sage I think over a year ago or so But whatever it was, it's like it required a specific package So I just made made it a point to it to require that every server was, you know, running at least that version Across the board and of course I had it set up to restart SSH as soon as it's updated So rather than logging into every single machine I just do one commit technically two because I tested on staging first and then It proved itself there merged domain and then everything got it. So um, that that was just super simple And I don't know how we survived with logging into everything one by one I can't even imagine what that and I've I've experienced this like it must have been so traumatic That I've like blocked it out of my mind and have no memory because I know I did do it that way But when automation took over like that was deleted and okay, this is the only way to do it for no I'm not logging into hundreds of servers anymore. Well, honestly some of the um ease of automation goes hand in hand With linux a lot smoother than it's gone with microsoft You know, even with some of the advanced tools we have pushing updates to microsoft servers is constantly a less than simple process Because it's so fundamentally built built different, but linux has been always on this side. So it's it's definitely um Once you get into some of these other skills like that a building things with ansible It does make it a lot easier to do that and I think it's easy to forget what it was like logging in With the exception of the things that still don't have full support for such things like special distributions and stuff like that That still require manual logins to push new versions and updates. So Some of those I mean with ansible, you know, there was a one at one point I can't remember which distribution it was In ansible that wasn't actually recognized and I literally pushed that in myself I wish I could remember which distribution it was so I could take credit for it Before the because of the fact that ansible supports that distro is my fault But literally it was one of the offshoots. So I was either a spin of a boon to a spin of art I don't remember but essentially it's just one file and you just say, you know, this distro matches this one So it knows this uses dnf or Um yum or pacman apt or whatever and I just pushed it right in there and I think that's the right mentality But um distribution support generally happens pretty quick in ansible, which is pretty cool Yeah, and someone says using it just to automate your switch and router config backups And getting rid of rancid makes it works Uh makes it worth it rancid is another tool for doing configuration management for those of you that don't know I've never used it. I'm just aware that it exists. So yeah, just like me and stowe Like a lot of people seem to like that one. So um Again, I mean to bring it all back. I think version control is essential for everyone that's doing anything linux related Even if it's just your notes That you're keeping track of or you know your server configs and just keep in mind if there's any situation where You're like man, I put a lot of work into this Uh configuration for this server it would really suck if I lost this config and had to start over Get that inversion control absolutely put that inversion control Again, make sure there's nothing there that shouldn't be inversion control ignore the files with keys and API credentials passwords and hashes get all that out of there And then just upload the rest you could you could you could reset your password? It's not the end of the world um and your api keys But the rest should go up there and especially I think you'll be justified that one day where your server's broken It doesn't work and then you do a get status. Oh, I see what changed And that saves you hours of just going through every line because you don't know which line changed Get will tell you which line changed and you'll know exactly what happened at that point And I think at that point is when you're really going to appreciate it. Yep All right, I think that's You can get started with uh, I mean there's a million different get started books I don't know if I have any one pick or recommend But there's there's lots of resources out there if you google how to get started We get and starting your first couple hello world version of your first get there's plenty of information out there I don't have any specific resources to link to but um, let us know down in the comments If you're watching this on youtube of some other things on get it maybe uh, you want I'm gonna point at j maybe j will cover in some other videos because it's it is on my list It is actually on my list. It's not I don't know when I just know it's not going to be this month or october But it is something that Um, I might try to push it up if there's enough demand for it But it's definitely going to happen So I will have a video and I might do a video on get to if there's enough people that want me to uh to do that Yeah, because jean's been busy if you haven't noticed he's got some uh whole new Series of videos on proxmox out there a lot of people ask about it We did a proxmox video but people said but tom proxmox seven is out so j did some Deep dives and put together a series of tutorials to get your proxmox fill and Wendell on the other side of it because he was a guest on here. He's starting to play with xcp and g. So I'm excited Awesome, that's really cool. Um Yeah, maybe somebody else start playing with that again I did enjoy it when I looked at it. So um, it's a good solution So respectively on each of our channels including level one techs Um, we're all we're all cranking out lots of other stuff out there But let us know what you want to know about it and uh, thank you for joining us today Much appreciate and ask us questions so we could do another q&a at some point. That'd be pretty cool We do enjoy the q&a. So we'll lead up to another episode. There's a Form you can fill out on the homelab.show. So you if you have your questions you want to ask there We have forums Ask away. We do look at the youtube comments as well So wherever if you're listening to this you can do it Do the website if you want to come to the youtube channel you can do it there And me and j both have forums directly. So we will consolidate stuff and now we'll do another q&a episode in a few Yep, looking forward to it. All right. Thanks everyone to join us. Appreciate it. Thank you